一時停止したアクティビティで onClick イベントを実行できます。私はそれが起こるべきではないと思ったので、これを修正する方法についての手がかりを期待しています.
私のアクティビティ (RoboFragmentActivity を拡張) には、日付の単純な TextView エントリがあります。この TextView の OnClick イベントは、DatePickerFragment を示しています。
public void onDateRowBoxClick(View view) {
new DatePickerFragment().show(getSupportFragmentManager(), "datePicker");
}
OnPostExecute イベントで別のアクティビティを開始する AsyncTask もあります。AsyncTask は進行状況ダイアログを表示し (操作には数秒かかります)、日付ビューを非表示にします。
AsyncTask.doInBackground 操作中に、進行状況ダイアログの領域をクリックすると、日付ビューが非表示になります。非同期タスクが完了すると、進行状況ダイアログが閉じられ、別のアクティビティが開始されます。
代わりに、日付ビューで onClick イベントを取得しています。アクティビティが既に一時停止されており、フラグメントがそれを処理できないため、IllegalStateException でスローされます (IllegalStateException: Could not execute method of the activity, IllegalStateException: Can not perform this action after onSaveInstanceState; onDateRowBoxClick を取得します)。ただし、一時停止したアクティビティにイベントを渡すべきではないと思います。私の質問は次のとおりです。私は正しいですか、これを修正するにはどうすればよいですか?
今のところ、私はこの回避策を持っていますが、それはかなりばかげています:
boolean paused = true;
@Override
protected void onResume() {
super.onResume();
paused = false;
}
@Override
protected void onPause() {
super.onPause();
paused = true;
}
public void onDateRowBoxClick(View view) {
if (!paused)
new DatePickerFragment().show(getSupportFragmentManager(), "datePicker");
}
ところで、最初はhttp://code.google.com/p/android/issues/detail?id=19917に関連していると思いましたが、回避策はうまくいきません。