2012-11-07 21 views
5

datepickerの変更をユーザーが変更したらすぐに変更を検出できるようにしたい。しかし、私はdatrpickerdialogを使いたくありません。私はdatePickerの日付を変更すると誰になぜonDateSet(DatePicker arg0、int arg1、int arg2、int arg3)が起動しないのか分かりますか?DatePickerDialogを使用せずにOnDateChangedListener、OnDateSetListenerを使用するには?

私は非常にそのコメントを感謝します。あなたのOnDateChangedListenerについて日付ピッカーを伝える必要があり

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

:ここ 乾杯

は、私のコードの簡易版です。通常のウィジェットとは異なり、DatePickerには setOnDateChangedListener() ...がありませんが、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

をあなたが積極的な相互作用が通知されるようにしたい場合は、それを設定するためにあなたの日付ピッカーにinit(year, month, day, onDateChangedListener)メソッドを呼び出す必要があります:デフォルトの日付を設定し、リスナーを一緒に宣言するinit()を使用してください。

最初に特定の日付を表示するように初期化したいと思う場合は、updateDateメソッドの代わりにこれを呼び出すことが理にかなっています(開始値が何であるか心配していませんか? )

DatePickerDialogは、ユーザーがピッカーとやりとりしたときにUIが何らかの方法を知っていることを意味するため、OnDateSetListenerをサポートしていません。それはダイアログではないので、完了したと思ったらあなた自身を決定する必要があります。 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(); 
         } 
        } 
       } 
     ); 
関連する問題