2010-09-16 25 views
8

मैं उलटी गिनती टाइमर की तरह कुछ लागू करने की कोशिश कर रहा हूं जो 0 पर अलार्म बजाता है। मैं टाइमर बंद होने से पहले प्रतीक्षा करने के लिए समय निर्धारित करने में सक्षम होना चाहता हूं और मैं ' मैं सोच रहा हूं कि कोई यूआई विजेट या तत्व है जो इस प्रकार की चयन कार्यक्षमता प्रदान करता है।एंड्रॉइड उलटी गिनती टाइमर के लिए घंटा/मिनट पिकर

असल में, क्या एंड्रॉइड के पास आईफोन के चयन स्पिनव्हील की तरह कुछ है? या क्या कोई प्रकार का टाइमपिकर है जो मनमाने ढंग से घंटों और मिनटों के चयन की अनुमति देता है? एंड्रॉइड में टाइमपिकर विजेट में एक अनावश्यक AM/PM लेबल है।

क्या मुझे इसे प्राप्त करने के लिए अपने स्वयं के कस्टम यूआई को लागू करने की आवश्यकता है?

उत्तर

1

हां, आप एक साथ एक साथ हैक कर सकते हैं। एपीआई में बदलावों के कारण हालांकि यह एक अलग संभावना है कि इस कोड में एक छोटी उम्र होगी।

int foo = 7; 
Object o = findViewById(ids[i]); 
Class<? extends Object> c = o.getClass(); 
Method m = c.getMethod("setCurrent", int.class); 
m.invoke(o, foo); 

String[] displayedValues = new String[] { "$00", "$01", "$02", "$03", "$04", 
         "$05", "$06", "$07", "$08", "$09", "$10", "$11", 
         "$12", "$13", "$14", "$15", "$16", "$17", "$18", "$19", "$20", "$21", 
         "$22", "$23", "$24", "$25"}; 
Method m = c.getMethod("setRange", int.class, int.class, String[].class); 
M.invoke(o, 0, 25, displayedValues); 

और फिर अपने लेआउट में इनमें से एक जोड़े को छोड़:

<com.android.internal.widget.NumberPicker 
android:id="@+id/picker1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_alignParentLeft="true" /> 

setCurrent सेट के पिकर जो foo के मामले में "$ 07" का मान का मतलब के सूचकांक। setRange पिकर में प्रदर्शित करने के लिए मान सेट करता है।

शुभकामनाएं।

+0

"राज्य" क्या है? – pengwang

+0

पेंगवांग, मुझे उम्मीद है कि संपादन चीजों को स्पष्ट करता है। मुझे बताएं अगर यह नहीं करता है। –

9

आप डिफ़ॉल्ट TimePickerDialog का उपयोग करें और onTimeChanged विधि ओवरराइड कर सकते हैं शीर्षक अपने आप को अद्यतन करने के लिए:

public class DurationPickerDialog extends TimePickerDialog { 

    public DurationPickerDialog(Context context, int theme, 
     OnTimeSetListener callBack, int hour, int minute) { 
     super(context, theme, callBack, hour, minute, true); 
     updateTitle(hour, minute); 
    } 

    public DurationPickerDialog(Context context, OnTimeSetListener callBack, 
     int hour, int minute) { 
     super(context, callBack, hour, minute, true); 
     updateTitle(hour, minute); 
    } 

    @Override 
    public void onTimeChanged(TimePicker view, int hour, int minute) { 
     super.onTimeChanged(view, hour, minute); 
     updateTitle(hour, minute); 
    } 

    public void updateTitle(int hour, int minute) { 
     setTitle("Duration: " + hour + ":" + formatNumber(minute)); 
    } 

    private String formatNumber(int number) { 
     String result = ""; 
     if (number < 10) { 
      result += "0"; 
     } 
     result += number; 

     return result; 
    } 
} 
+1

मैं सैमसंग एस 3 का उपयोग कर रहा हूं। सेट बटन समय पर क्लिक करने के बाद सेट किया गया था और संवाद खारिज कर दिया गया था लेकिन फिर कभी नहीं दिखाया गया है, लेकिन अगर मैं रद्द बटन संवाद पर क्लिक कर ठीक काम करता हूं। – Deepak

+0

जहां तक ​​मैं यह कह सकता हूं कि अवधि में 24 घंटे से अधिक की सेटिंग की अनुमति नहीं दी जाएगी। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^