2013-09-28 45 views
0

由于某种原因,这看起来像是一个简单的问题,我很难与太多时间盯着计算机。我有一些代码,我可以点击文本来打开一个菜单(以Dialogue PreferenceActivity的形式),它允许我编辑是否使用定时器,如果有的话定时器持续多长时间。我遇到的问题是当我点击框时,它会继续执行主要活动线程中的代码,并在我有机会更改编辑菜单中的设置之前执行操作。在继续通过代码之前等待Dialogue PreferenceActivity返回的方法

case R.id.main_timer: 
    startActivity(new Intent(this, EditSettingsView.class)); 
    // NEED TO WAIT HERE FOR OVERLYING INTENT TO CLOSE 

    boolean editedSettingTimerOn = editedSetting.getBoolean("edit_timer_active", true); 
    if(editedSettingTimrOn == true){ 
     startTimer(editedSetting.getLong("edit_timer_val", 180000); 
    } 
    break; 

我需要等待活动EditSettingView.class完成之前,我得到的布尔值,因此我得到的新选择布尔,而不是将其设置在活动开启时的值。有没有一种方法来实现onPause()在代码中创建一个中断,然后在覆盖的EditSettingView PreferenceActivity关闭时返回?

回答

0

有没有一种方法可以实现onPause()在代码中创建一个中断,然后在覆盖的EditSettingView PreferenceActivity关闭时返回?

否。Android不提供阻止UI模型。

您可以实现an OnSharedPreferenceChangeListener,将其连接到SharedPreferences,并向OnSharedPreferenceChangeListeneronSharedPreferenceChanged()方法,评论之后将你的代码时,你检测到edit_timer_active偏好发生了变化。

或者,把你的edit_timer_active - 检查代码在onResume()这个活动。

+0

这也看起来像它会工作。我将不得不看看这个。 – zgc7009

+0

将代码移至onResume,就像魅力一样。不知道为什么我没有想到它,但感谢你的帮助。虽然我觉得OnSharedPreferenceChangeListener和startActivityForResult(),正如majormajors回答的那样,它更简洁,它仍然通过代码转换完成工作。检查你。 – zgc7009

0

Android的处理方法是使用startActivityForResult()。然后

http://developer.android.com/reference/android/app/Activity.html#StartingActivities

EditSettingView活动称之为setResult(RESULT_OK)它完成,然后原来的活动的onActivityResult()将被称为前。

+0

这看起来像要走的路,我正在努力实现它。感谢您的答复。 – zgc7009

+0

我将尝试在我的编辑代码中发布,但截至目前,我正在得到一个空错误(失败提供结果)。 – zgc7009

相关问题