2013-09-28 43 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

相關問題