出于某种原因,这似乎是一个简单的问题,我很难过,太多时间盯着电脑可能。我有一些代码,我可以点击文本打开一个菜单(以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;
我需要等待Activity EditSettingView.class在我得到布尔值之前完成,这样我得到新选择的布尔值,而不是活动打开时设置的值。有没有办法实现onPause()在那里的代码中创建一个中断,然后在覆盖的EditSettingView PreferenceActivity关闭时返回?
答案 0 :(得分:0)
有没有办法实现onPause()在那里的代码中创建一个中断,然后在覆盖的EditSettingView PreferenceActivity关闭时返回?
没有。 Android不提供阻止UI模型。
您可以实施an OnSharedPreferenceChangeListener
,将其附加到SharedPreferences
,并在评论后将代码移至onSharedPreferenceChanged()
的{{1}}方法,当您检测到OnSharedPreferenceChangeListener
偏好已更改。
或者,将您的edit_timer_active
- 检查代码放入此活动的edit_timer_active
。
答案 1 :(得分:0)
Android处理此问题的方法是使用startActivityForResult()
。
http://developer.android.com/reference/android/app/Activity.html#StartingActivities
您的EditSettingView
活动会在完成之前致电setResult(RESULT_OK)
,然后系统会调用原始活动的onActivityResult()
。