時間を設定するために timepickerdialog を使用するアクティビティに取り組んでいます。しかし、ダイアログボックスから時間を設定した後、続行すると例外が発生します
なので:
java.lang.RuntimeException: Unable to pause activity
Caused by: java.lang.NullPointerException
at android.widget.TimePicker.updateInputState(TimePicker.java:995)
at android.widget.TimePicker.onSaveInstanceState(TimePicker.java:640)
at android.view.View.dispatchSaveInstanceState(View.java:13561)
私のコードは次を使用します:
オンクリック
showDialog(END_TIME_PICKER_ID);
protected void onPrepareDialog(int id, ダイアログ ダイアログ)
case END_TIME_PICKER_ID : endHourOfDay = mEndCalendar.get(Calendar.HOUR_OF_DAY); endMinuteOfDay = mEndCalendar.get(Calendar.MINUTE); ((TimePickerDialog) dialog).updateTime(endHourOfDay, endMinuteOfDay); ((TimePickerDialog) dialog).show(); break;
保護されたダイアログ onCreateDialog(int id)
case END_TIME_PICKER_ID : return new TimePickerDialog(this, mEndTimeSetListener, endHourOfDay, endMinuteOfDay, false);
on 時間設定リスナー
private TimePickerDialog.OnTimeSetListener mEndTimeSetListener = new TimePickerDialog.OnTimeSetListener() { public void onTimeSet(TimePicker view, int hourOfDay, int minute) { endHourOfDay = hourOfDay; endMinuteOfDay = minute; GregorianCalendar endCalendar = (GregorianCalendar) mEndCalendar.clone(); endCalendar.set(Calendar.DAY_OF_MONTH, mStartCalendar.get(Calendar.DAY_OF_MONTH)); endCalendar.set(Calendar.HOUR_OF_DAY, endHourOfDay); endCalendar.set(Calendar.MINUTE, endMinuteOfDay); endCalendar.set(Calendar.SECOND, second); }
したがって、上記のスニペットを実行し、タイムピッカーを設定した後、再生ボタンをクリックして次のアクティビティに移動すると、このアプリケーションがクラッシュします。次に、行って再生します(新しいアクティビティ)
戻るキーをクリックすると、別のエラーが発生します。
java.lang.RuntimeException: Unable to start activity ComponentInfo
[OK] をクリックすると、アクティビティ グループ内の既定のアクティビティで再びアクティビティ グループから開始されます。
これらの問題はすべて、タイムピッカー ダイアログが原因だと思います。(時間を編集するために) タイムピッカー ダイアログを開かない場合、すべて正常に動作します。
timepickerdialog コードに問題がある場合はお知らせください。