2

設定アクティビティにタイムピッカーが必要です。次のようになります。

ここに画像の説明を入力

次に、ユーザーが「時間」をクリックすると、次のダイアログが表示されます。

ここに画像の説明を入力

これはまさに私が欲しかったものです。ただし、次の点に注意してください。

  1. ダイアログは、XML によって参照されるカスタム ダイアログです。

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

  2. 私の設定 XML

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

  3. 私のJavaコード:

    public static class TestSettings extends PreferenceActivity implement 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 が機能しないのかわかりません。何か案は?

プリファレンスアクティビティでタイムピッカーをプログラムするには、別のアプローチを使用する必要があるのではないでしょうか?

提案が適用されます。ありがとう!

4

2 に答える 2

1

次のように、おそらくメソッドでsetOnTimeChangedListener(this)を呼び出す必要があります。onCreate()

tp.setOnTimeChangedListener(this);
于 2013-03-29T15:37:40.813 に答える