我想在首选项活动中使用时间选择器。看起来像这样:



然后,如果用户单击“时间”,则会弹出此对话框:



这正是我想要的。但是有几件事需要注意:


对话框是XML引用的我的自定义对话框




  <TimePicker
    android:id="@+id/timePicker1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />



我的首选项XML



<CheckBoxPreference android:title="Checkbox" android:summary="Checkbox"/>
<EditTextPreference android:summary="time" android:dialogTitle="Hello" android:dialogLayout="@layout/preflayout" />



我的Java代码:

公共静态类TestSettings扩展了PreferenceActivity实现TimePicker.OnTimeChangedListener {

    TimePicker tp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref);
        tp = (TimePicker) findViewById(R.id.timePicker1);

    }

    @Override
    public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {

        if(view.getId() == R.id.timePicker1) {
        Log.i("STATIC", "hour "+hourOfDay+"minute "+minute);
        }
    }

}



由于某些原因,当我设置时间时,OnTimeChangedListener不会触发。我不知道这是否是在首选项屏幕中以这种方式编程时间选择器的正确方法,但是我完全需要这样。无论如何,我不知道为什么OnTimeChangedListener无法正常工作。有任何想法吗?

也许我需要在偏好活动中使用另一种方法来编程时间选择器?

提出建议。谢谢!

最佳答案

您可能需要在onCreate()方法中调用setOnTimeChangedListener(this),如下所示:

tp.setOnTimeChangedListener(this);

07-28 10:29