0

時間を選んで返すメソッドを実装したかったのです。

public static int pickTime(Context context, int minuteOfDay) {
    final int[] result = {-1};
    final OnTimeSetListener listener = new OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker timePicker, int hourOfDay, int minute) {
            result[0] = 60*hourOfDay + minute;
        }
    };
    new MyTimePickerDialog(context, listener, minuteOfDay/60, minuteOfDay%60, false).show();
    return result[0];
}

ダイアログがすぐに戻ることを確認するためだけに、したがって私のメソッドは常に-1を返します。

それは私が一緒に暮らすことができるものです、しかし、私はこのような何かが可能であるかどうか興味があります。TimePickerとにかく画面全体を占めるので、入力を待っている間にアプリが動作するかどうかは気にしません。

標準ソリューションは私には有効ですが、これはシステムをよりよく理解するための良い演習であると思います。

4

1 に答える 1

0

ダイアログが閉じるのを待つだけで、別のスレッドから簡単に実行できます。イベント処理をブロックするため、メインスレッドの待機は機能しません。そのため、待つ代わりに自分でイベント ループを実行する必要がありましたが、これは複雑であるか、不可能でさえありました。

できることはTextView、設定する必要がある を渡すことです。しかし、私はいつももっとやらなければならないので、それはかなり役に立たない. 次のように使用できるクラスになりました(コンストラクターを呼び出すと、すべての作業が行われます)。

new MyTimePickerCallback(context, oldMinutes) {
    @Override
    public void onResult(int newMinutes) {
        ... do whatever you want
    }
};
于 2012-09-21T23:40:11.313 に答える