2013-08-16 37 views
0

我希望用戶從他的畫廊中選擇圖片,因此我有以下內容。Activity中的onActivityResult未在API 18中的片段的startActivityForResult後調用

我有一個SettingsActivity,它說:

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

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) { 
     //do sth here 
    } 
} 

在這種SettingsActivity的onCreateMethod我做的:

getFragmentManager().beginTransaction().replace(android.R.id.content, new SettingsFragment()).commit(); 

然後我有做的SettingsFragment中的onCreate下列()

Preference pref = (Preference) findPreference(SettingsConstants.Key.PREF_BACKGROUND_IMAGE); 
    pref.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true); 
      intent.putExtra(Intent.CATEGORY_OPENABLE, true); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      getActivity().startActivityForResult(Intent.createChooser(intent, "Select Picture"), SettingsActivity.RESULT_LOAD_IMAGE); 
      return true; 
     } 
    }); 

這工作在4.2 - 但不與4.3任何工作任何更多!任何人都可以告訴我我在這裏錯過了什麼,或者是否有人面臨同樣的問題?

+0

Fragmenst也有[onActivityResult()](http://developer.android.com/reference/android/app/Fragment.html#onActivityResult%28int,%20int,%20android.content.Intent%29)代碼是否返回? – Delblanco

+0

代碼也沒有在片段onActivityResult()方法中返回 –

+0

可以肯定,意圖選擇器和選擇的意圖像以前一樣工作,只有onActivityResult不被調用? – Delblanco

回答

0

它被調用,但在片段中設置的請求代碼與您的 onActivityResult活動的方法的參數不同!

+0

我看不出你認爲這是不同的請求代碼? RESULT_LOAD_IMAGE在SettingsActivity中定義爲靜態公共成員,並在Fragment中的startActivityForResult方法中使用。 –

+0

確實如此,您將此代碼傳遞給'startActivityForResult(intent,code)'方法。但是當你的'onActivityResult(codeDifferent,resultCode,intent)'被回調時,代碼不是你傳遞的代碼。這是因爲它在內部被轉換爲活動和片段。 @ X.X_Mass_Developer – vbevans94

+0

我不相信代碼是在內部改變的,你有沒有參考你的陳述? 但是,onActivityResult()方法甚至沒有調用! –

相關問題