暂停活动时阻止onclick事件

时间:2013-03-29 12:37:47

标签: android android-widget

我可以在暂停的活动上运行onClick事件。我认为不应该发生, 我希望能有一些关于如何解决这个问题的线索。

在我的Activity(扩展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");
}

BTW,起初我认为它与http://code.google.com/p/android/issues/detail?id=19917有关,但解决方法对我不起作用。

0 个答案:

没有答案