2013-08-16 55 views
7

我用一些選項卡編寫了FragmentActivity。當我使用startActivityForResult(在FragmentActivity或ListFragment中沒有區別)調用另一個活動(我用它來設置用戶首選項)時,onActivityResult方法在我開始時執行此偏好活動時被調用,但不是在完成時調用我期望它(如果它在FragmentActivity或ListFragment中再次沒有區別)。在完成偏好活動後,此方法根本不會被調用。onActivityResult在Activity啓動時被調用,而不是在完成時調用

我的問題是,我想在我完成首選項活動後刷新當前選項卡(並設置最後使用的選項卡ID),我希望能夠在onActivityResult方法中執行此操作。

這是類創建偏好活動:

public abstract class ListFragmentBase<I> extends ListFragment implements 
LoaderCallbacks<List<I>> { 

這是轉發我這個類裏面的偏好活動的方法:

protected void forwardToPreferences(int currentTab){    
     Intent intent = new Intent(getActivity(), GlobalPreferencesActivity.class); 
     getActivity().startActivityForResult(intent, 10); 
} 

這是得到之後調用的方法調用上述方法,但不是在完成被叫活動後,不能完成

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
} 

這個是偏好活動:

public class GlobalPreferencesActivity extends Activity { 

和類,你看我怎麼調用完成方法中:

TextView confirmSettings = (TextView) view.findViewById(R.id.confirm_settings); 
confirmSettings.setTextSize(PreferenceHelper.getSizeHeader(getApplicationContext())); 
    confirmSettings.findViewById(R.id.confirm_settings).setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) {  
      if(BaseFragmentActivity.lastActivity != null){ 
       BaseFragmentActivity.lastActivity.onRefreshData(); 
     } 
      ComponentName callingActivity = getCallingActivity(); 
      GlobalPreferencesActivity.this.finish(); 
     } 
    }); 
+0

郵政編碼和logcat輸出。 – Squonk

+1

我可以通過在AndroidManifest.xml中爲偏好活動添加android:launchMode =「standard」來解決我的特殊問題(以前是 - 像ListFragements - 設置爲「singleInstance」)。但startActivityForResult的行爲對我來說仍然很奇怪。 – richard

+0

對不起,它是我第一次添加代碼,它花了我一段時間。現在我必須以正確的方式找出格式化logcat並添加它。 – richard

回答

3

這就是Android

onActivityResult() called prematurely

的錯誤和

Why does result from startActivityForResult come before activity really starts?

我不知道你使用的版本,如果它已經解決/修正

+0

謝謝我會檢查如果這對我有幫助,但它絕對是同樣的問題。對於我關於處理計算器的經驗不足的問題感到抱歉,但是我現在必須將我的問題標記爲重複(如果是的話:如何)? – richard

+0

@Richard沒問題,不用擔心。至少你發現你並不孤單,有同樣的麻煩;-)。如果您認爲我回答了您可以驗證我的回答,以便其他人知道問題已得到解答。 – HpTerm

7

請確保活動您的電話是不是在AndroidManifest文件singleInstance。確保它是單頂或標準的。

希望這會爲你們工作,以及

+0

哈利路亞,工作!令人討厭的bug,出現在我的Android 4.3項目中,使用相機來捕捉意圖結果。 – Pelanes

+0

我有'singleTask'作爲啓動模式。它可以工作,如果刪除 – Libin

+0

如果有問題的活動是一個系統'設置'活動? – TheRealChx101

0

onActivityResult,在onStart後調用,

的根本原因,當你跳從活動到另一個活動,而無需調用完成。然後上一次活動進入停止狀態。

在onStop之後,onstart方法調用,然後調用onActivityResult。

相關問題