我用一些選項卡編寫了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();
}
});
郵政編碼和logcat輸出。 – Squonk
我可以通過在AndroidManifest.xml中爲偏好活動添加android:launchMode =「standard」來解決我的特殊問題(以前是 - 像ListFragements - 設置爲「singleInstance」)。但startActivityForResult的行爲對我來說仍然很奇怪。 – richard
對不起,它是我第一次添加代碼,它花了我一段時間。現在我必須以正確的方式找出格式化logcat並添加它。 – richard