简体   繁体   English

不使用两个片段调用onActivityResult()

[英]onActivityResult() not called with two fragments

I have two Fragments named HomeworkListFragment and HomeworkFragment. 我有两个名为HomeworkListFragment和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. 这就是我从MyListFragment启动MyFragment的方式。

After I finish, I want to call this from MyFragment: 完成后,我想从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: 回到MyListFragment中,我已经实现了:

@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()); 是答案的一部分:NavUtils.navigateUpFromSameTask(getActivity());

Is MyListFragment getting recreated? 是否重新创建MyListFragment?

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! 现在我拥有了!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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