我能够在暂停的活动上运行 onClick 事件。我认为它不应该发生,我希望能找到一些关于如何解决这个问题的线索。
在我的活动(扩展 RoboFragmentActivity)中,我有一个简单的 TextView 日期条目。此 TextView 的 OnClick 事件显示 DatePickerFragment:
public void onDateRowBoxClick(View view) {
new DatePickerFragment().show(getSupportFragmentManager(), "datePicker");
}
我还有一个 AsyncTask,它在其 OnPostExecute 事件中启动另一个活动。AsyncTask 显示一个进度对话框(操作需要几秒钟),它隐藏了日期视图。
在 AsyncTask.doInBackground 操作期间,我单击了进度对话框上的区域,该区域隐藏了日期视图。异步任务完成后,进度对话框被关闭,另一个活动应该开始。
相反,我在日期视图上获得了 onClick 事件。它抛出了 IllegalStateException,因为活动已经暂停并且片段无法处理它(我得到 IllegalStateException:无法执行活动的方法,IllegalStateException:在 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有关,但解决方法对我不起作用。