5

我有一個主要活動和一個preferenceActivity。在我的第一個活動中,我調用menu並通過調用startActivityForResult繼續進行preferenceActivity。如何從首選項屏幕返回主要活動?

   case R.id.settings: 
       startActivityForResult(new Intent(this, SettingsActivity.class), LAUNCH_SETTINGS); 
       return true; 

然後我更改我的設置,並希望返回主要活動並查看應用了新設置的主要活動。在的onPause()方法做如下(我右明白當我按下後退按鈕這個方法會被調用,對吧?)

@Override 
    protected void onPause() { 
     super.onPause(); 
     setResult(RESULT_OK, new Intent(this, MainActivity.class)); 
     finish(); 
    } 

在主要活動

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == LAUNCH_SETTINGS) { 
      if (resultCode == RESULT_OK) { 
       new RefreshList().execute(ACTION_SELECT); 
       Log.d(TAG, "On activity result"); 
      } 
     } 
    } 

但我acyncTask不打電話,日誌不打印。我如何正確地做到這一點? 謝謝!

回答

12

在我的第一個活動中,我調用menu並通過調用startActivityForResult繼續preferenceActivity。

使用startActivityForResult()PreferenceActivity是相當不尋常的。 PreferenceActivity旨在與startActivity()一起使用。如果啓動PreferenceActivity的人關心首選項更改,則應該使用SharedPreferences對象註冊首選項更改偵聽器。

然後我更改我的設置並希望返回主要活動並查看應用了新設置的主要活動。

我建議您改用SharedPreferences.OnSharedPreferenceChangeListener。或者,只需在原始活動的onStart()onResume()方法中重新閱讀您關心的偏好。

在的onPause()方法做如下(我右明白當我按下後退按鈕這個方法會被調用,對吧?)

不,這是行不通的。 onPause()爲時已晚,致電setResult()

+0

謝謝。將盡力做到這一點。 – 2010-10-15 14:17:31