2012-11-07 10 views
5

जैसे ही उपयोगकर्ता इसे बदलना शुरू करता है, मैं डेटपिकर पर परिवर्तनों का पता लगाने में सक्षम होना चाहता हूं। हालांकि मैं datrpickerdialog का उपयोग नहीं करना चाहता। क्या किसी को पता है कि ऑनडेटेट (डेटपिकर arg0, int arg1, int arg2, int arg3) क्यों नहीं है जब मैं डेटपिकर पर दिनांक बदलता हूं?DateDickerdialog का उपयोग किए बिना OnDateChangedListener, OnDateSetListener का उपयोग कैसे करें?

मैं उस पर किसी भी टिप्पणी की अत्यधिक सराहना करता हूं।

public class AddItem extends Activity implements OnDateChangedListener,OnDateSetListener{ 

DatePicker start ; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.entryelements); 
    start = (DatePicker) findViewById(R.id.start); 

@Override 
public void onDateChanged(DatePicker view, int year, int monthOfYear, 
     int dayOfMonth) { 

    // TODO Auto-generated method stub 
    Toast.makeText(getApplicationContext(), 
      " thiv view"+year, 
      Toast.LENGTH_LONG).show(); 
    Log.v("indatechange", "ok"); 

} 

@Override 
public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { 
    // TODO Auto-generated method stub 
    Toast.makeText(getApplicationContext(), 
      " thiv view"+arg0, 
      Toast.LENGTH_LONG).show(); 
    Log.v("indatechange", "ok"); 
} 

}

उत्तर

6

आप अपने OnDateChangedListener के बारे में DatePicker बताने की आवश्यकता: चीयर्स

यहाँ मेरी कोड का सरलीकृत संस्करण है। नियमित विगेट्स के विपरीत डेटपिकर में setOnDateChangedListener() नहीं है ... लेकिन इसमें init() है। एक साथ डिफ़ॉल्ट तिथि निर्धारित और श्रोता घोषित करने के लिए प्रयोग करें init():

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.entryelements); 

    // Set the date to now 
    Calendar calendar = Calendar.getInstance(); 
    start = (DatePicker) findViewById(R.id.start); 
    start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), this); 
} 
0

आप अपने DatePicker पर init(year, month, day, onDateChangedListener) विधि कॉल करने के लिए सेट अप करने के लिए, आप सक्रिय रूप से बातचीत के बारे में सूचित किया जाना चाहते हैं, तो आवश्यकता होगी।

मान लीजिए कि आप इसे शुरू करने के लिए एक विशेष तिथि दिखाने के लिए प्रारंभ करना चाहते हैं, तो इसे अपडेट करने के बजाय इसे कॉल करना समझदारी है विधि (जो आप कर रहे हैं? या आप इस बात की परवाह नहीं कर रहे हैं कि शुरुआती मूल्य क्या है?)

ध्यान दें कि यह ऑनपेटसेट लिस्टनर का समर्थन नहीं करता है जिस तरह डेटपिकरडियलोग करता है, क्योंकि इससे यह संकेत मिलेगा कि यूआई को यह जानने का कोई तरीका है कि उपयोगकर्ता को पिकर के साथ बातचीत करने पर क्या किया जाता है। चूंकि यह एक संवाद नहीं है, इसलिए जब आपको लगता है कि वे कर रहे हैं तो आपको खुद को तय करना होगा। बस OnDateChangedListener के साथ ट्रैक रखें, और यह समझ में आ जाएगा।

0
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.entryelements); 
start = (DatePicker) findViewById(R.id.start); 

expirationDate=(EditText) findViewById(R.id.expirationDate); 
Calendar calendar = Calendar.getInstance(); 
start = (DatePicker) findViewById(R.id.start); 
MyOnDateChangeListener onDateChangeListener = new MyOnDateChangeListener(); 
start.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), onDateChangeListener); 
} 

public class MyOnDateChangeListener implements OnDateChangedListener { 
    @Override 
    public void onDateChanged(DatePicker view, int year, int month, int day) { 
     int mon=month+1; 
     expirationDate.setText(day+"/"+mon+"/"+year); 
    } 
} 
0
DatePicker dpEndDate,dpStartDate; 
dpStartDate=(DatePicker)findViewById(R.id.dpStartDate); 
dpEndDate=(DatePicker)findViewById(R.id.dpEndDate); 
    Calendar today = Calendar.getInstance(); 
     dpStartDate.init(today.get(Calendar.YEAR), 
       today.get(Calendar.MONTH), 
       today.get(Calendar.DAY_OF_MONTH), 
       new DatePicker.OnDateChangedListener() { 
        @Override 
        public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 
         SmartUtils.ting(MicaAttendanceFilter.this,"Start Date Changes"); 
         try { 
          SimpleDateFormat simpleDateFormat=new SimpleDateFormat("dd M yyyy"); 
          Calendar startCalendar = Calendar.getInstance(); 
          int startDay=dpStartDate.getDayOfMonth(); 
          int startMonth=dpStartDate.getMonth()+1; 
          int startYear=dpStartDate.getYear(); 
          String startDate = startDay+" "+startMonth+" "+startYear; 
          startCalendar.setTime(simpleDateFormat.parse(startDate)); 
          dpEndDate.setMinDate(startCalendar.getTimeInMillis()); 
         } catch (ParseException e) { 
          e.printStackTrace(); 
         } 
        } 
       } 
     ); 
संबंधित मुद्दे