简体   繁体   中英

onActivityResult() not called with two fragments

I have two Fragments named HomeworkListFragment and HomeworkFragment.

BOTH INHERIT FROM -> Fragment

Intent i = new Intent(getActivity(),HomeworkPagerActivity.class);
i.putExtra(HomeworkFragment.EXTRA_HOMEWORK_ID, homework.getId());
startActivityForResult(i,REQUEST_DELETE_HOMEWORK_ID);

This is how I start MyFragment from MyListFragment.

After I finish, I want to call this from MyFragment:

Intent i = new Intent();
i.putExtra(EXTRA_DELETE_HOMEWORK_ID, mHomework.getId());
getActivity().setResult(Activity.RESULT_OK, i);
//Toast.makeText(getActivity(), "deleting?", Toast.LENGTH_SHORT).show();  
//getActivity().finish();
NavUtils.navigateUpFromSameTask(getActivity());

Back in MyListFragment I've implemented:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Toast.makeText(getActivity(), "HERE", Toast.LENGTH_SHORT).show();    
    if  (requestCode == REQUEST_DELETE_HOMEWORK_ID){
        String filename = data.getStringExtra(HomeworkFragment.EXTRA_DELETE_HOMEWORK_ID);
        Toast.makeText(getActivity(), "ID: "+filename, Toast.LENGTH_SHORT).show();    
    }
}

However, this method is never called!

I've declared them both in my manifest:

<activity
        android:name=".HomeworkListFragment"
        android:label="@string/app_name"
        android:launchMode="singleTop" >
        <meta-data android:name="android.support.PARENT_ACTIVITY"
            android:value=".HomeworkTabFragment"/>
    </activity>
    <activity
        android:name=".HomeworkFragment"
        android:label="@string/app_name" >
        <meta-data android:name="android.support.PARENT_ACTIVITY"
            android:value=".HomeworkListFragment"/>
    </activity>

Is part of the answer with: NavUtils.navigateUpFromSameTask(getActivity());

Is MyListFragment getting recreated?

Strangely enough, I was missing out the line:

super.onActivityResult(requestCode, resultCode, data);

I had referenced the wrong line previously and could not figure out why. Now I have it!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM