在继续执行代码之前等待从Dialogue PreferenceActivity返回的方法

时间:2013-09-28 20:35:04

标签: java android android-intent android-activity

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

2 个答案:

答案 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()