1

我有两个名为HomeworkListFragment和HomeworkFragment的片段。onActivityResult()没有调用两个片段

BOTH继承 - >片段

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

这是我从MyListFragment开始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()); 

早在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();  
    } 
} 

然而,这种方法不会被调用!

我已经声明他们都在我的清单:

<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> 

与部分答案:NavUtils.navigateUpFromSameTask(getActivity());

MyListFragment被重新创建吗?

+1

你必须调用getActivity()。finish();在子活动 – pskink 2014-08-31 16:00:41

+0

所以我也调用NavUtils.navigateUpFromSameTask(getActivity());在此之上? – wayway 2014-08-31 17:22:57

+0

编辑完成后,它仍然不会调用onActivityResult()。不管我尝试什么样的组合。使用navigateupfromsametask和get activity()。finish();它也不是。 MyListFragment是否被重新创建? – wayway 2014-08-31 17:25:29

回答

0

奇怪的是,我错过了行:

super.onActivityResult(requestCode, resultCode, data); 

我以前提到的错误路线,无法找出原因。现在我拥有了!

相关问题