2017-05-02 6 views
0

ここにコードがあります。プログラムがonDateSet関数に入るかどうかを調べるLog.eを持っていて、そうでないことがわかった。ここでDatePickerDialogがonDateSetにアクセスできない

は、コードは次のとおりです。ここ

private void datePicker(){ 
    //Calendar datePickercal = Calendar.getInstance(); 
    DatePickerDialog dialog = new DatePickerDialog(ContentInput.this, new DatePickerDialog.OnDateSetListener(){ 
     @Override 
     public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 
      Log.e(ErrorTag, "date picker: " + year + " " + month + " " + dayOfMonth); 
      cal.set(year,month+1,dayOfMonth); 
     } 
    } 
    ,cal.get(Calendar.YEAR) 
    ,cal.get(Calendar.MONTH) 
    ,cal.get(Calendar.DAY_OF_MONTH)); 

    dialog.show(); 
    dialog.setButton(DialogInterface.BUTTON_POSITIVE, "ok", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      if (which == DialogInterface.BUTTON_POSITIVE) { 
       timePicker(); 
      } 
     } 
    }); 
} 
+0

datePicker()をどこかに呼び出しましたか? –

+0

はい。私はそれがオンになっているときにスイッチボタンを持っています、それはdatePicker()を呼び出します – richardrun

+0

そのコールバックが呼び出されるポジティブボタンのデフォルトの動作をオーバーライドしています。あなたの 'timePicker()'呼び出しを 'onDateSet()'に移動し、 'setButton()'呼び出しを取り除きます。 –

答えて

1

DatePickerDialogである正のボタンクリックでそのOnDateSetListenerコールバックを呼び出します。実際には、DatePickerDialogは、setButton(BUTTON_POSITIVE, ...)への独自のコールでそのコールバックを設定します。そのメソッドへの呼び出しはそれをオーバーライドしているので、OnDateSetListenerは決して呼び出されません。

timePicker()コールをonDateSet()メソッドに移動し、dialog.setButton()コールを削除します。

0

は、日付ピッカーのためのコード

calendar1.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      dateflag = "from"; 
      DialogFragment newFragment = new SelectDateFragment(); 
      newFragment.show(getFragmentManager(), "DatePicker"); 

     } 
    }); 


public static class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar calendar = Calendar.getInstance(); 
     int yy = calendar.get(Calendar.YEAR); 
     int mm = calendar.get(Calendar.MONTH); 
     int dd = calendar.get(Calendar.DAY_OF_MONTH); 
     return new DatePickerDialog(getActivity(), this, 2017, 01, 01); 
    } 

    public void onDateSet(DatePicker view, int yy, int mm, int dd) { 
     populateSetDate(yy, mm + 1, dd); 
    } 

    public void populateSetDate(int year, int month, int day) { 
     if (dateflag.equals("from")) { 
      from_date_ext.setText(day + "/" + month + "/" + year); 
     } else { 
      to_date_ext.setText(day + "/" + month + "/" + year); 

     } 
    } 

} 
関連する問題