3

奇妙な理由で、DatePickerDialog の一部として肯定的なボタンをクリックすると、DateSetListener の一部としての onDateSet メソッドは、SAMSUNG DEVICESでのみ呼び出されません。

これが私がやっていることです:

DateSetListener _datePickerDialogCallback = new DateSetListener();

DatePickerDialog _datePickerDialog = new DatePickerDialog(context, _datePickerDialogCallback, year, month, days);
_datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, StringUtil.getString(R.string.command_ok), new DialogInterface.OnClickListener() {

    public void onClick(DialogInterface arg0, int arg1) {
      _done = true;
    }

  });

_datePickerDialog.show();



private class DateSetListener implements DatePickerDialog.OnDateSetListener {

  public void onDateSet(DatePicker view, int year, int month, int day) {

    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day, calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE),
        calendar.get(Calendar.SECOND));

    if (_done) {
      _view.setText(formatDate(calendar.getTime()));
    }
  }
}

なぜこれが起こっているのかについての提案をいただければ幸いです。お願いします。これはSAMSUNG DEVICESのみであることに注意してください

4

2 に答える 2

6

ICS 以降では、datePickerDialog を定義する際にコールバックを定義する必要はないようです。ただし、onPositiveButtonClick と onNegativeButtonClick はコールバックを呼び出す必要があります。何かのようなもの :

    _datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "Ok", new DialogInterface.OnClickListener() {

      public void onClick(DialogInterface arg0, int arg1) {
        _done = true;
        DatePicker datePicker = _datePickerDialog.getDatePicker();
        _datePickerDialogCallback.onDateSet(datePicker, datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
      }

    });
于 2013-09-30T17:22:27.353 に答える
2

あなたのコードの何が問題なのかわかりませんが、これが私がやった方法であり、SG2で動作します(setButtonのことはしませんでした)

内部クラスとして実装された私のOnDataSetListener :

class DatePickHandler implements OnDateSetListener {
    @Override
    public void onDateSet(DatePicker view, int year, 
        int monthOfYear, int dayOfMonth) {
       //do stuff
       mDateDialog.hide();
    }   
}

アプリのフラグメントでのDatePickerDialogの作成

mDateDialog = new DatePickerDialog(getActivity(), 
    new DatePickHandler(), mYear, mMonth, mDay);

onClickListener()のonClick()メソッド内でダイアログを開くよりも

mDateDialog.show();

編集 26.08.13\

以下を追加しました

mDateDialog.setButton(DialogInterface.BUTTON_POSITIVE, "test text", new
    DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
        Log.i("test", "in onclick");
});

これが今の様子です。「テスト テキスト」ボタンを押すと、新しく作成した onClick メソッドが呼び出されます。

ここに画像の説明を入力

于 2013-08-23T12:57:42.640 に答える