0

出于某种原因,这似乎是一个我很难解决的简单问题,可能有太多时间盯着电脑看。我有一些代码,我可以在其中单击文本以打开一个菜单(以对话 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 关闭时返回?

4

2 回答 2

0

有没有办法实现 onPause() 在代码中创建一个中断,然后在上层 EditSettingView PreferenceActivity 关闭时返回?

不,Android 不提供阻塞式 UI 模型。

当您检测到首选项已更改时,您可以实现一个OnSharedPreferenceChangeListener,将其附加到您的SharedPreferences,并将注释后的代码移动到 的onSharedPreferenceChanged()方法。OnSharedPreferenceChangeListeneredit_timer_active

或者,将您的edit_timer_active检查代码放入onResume()此活动中。

于 2013-09-28T20:40:08.390 回答
0

Android 的处理方式是使用startActivityForResult().

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

然后,您的EditSettingView活动将setResult(RESULT_OK)在完成之前调用,然后将调用原始活动onActivityResult()

于 2013-09-28T21:44:54.093 回答