3

我能够在暂停的活动上运行 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有关,但解决方法对我不起作用。

4

0 回答 0