[英]Fragment's onActivityResult is not Called
I have two Fragment's: HomeworkListFragment and HomeworkFragment. 我有两个片段:HomeworkListFragment和HomeworkFragment。 HomeworkFragment will start an instance of HomeworkFragment like so: HomeworkFragment将启动HomeworkFragment的实例,如下所示:
HomeworkObject homework = new HomeworkObject();
HomeworkLab.get(getActivity()).addHomework(homework);
Intent i = new Intent(getActivity(),HomeworkPagerActivity.class);
i.putExtra(HomeworkFragment.EXTRA_HOMEWORK_ID, homework.getId());
startActivityForResult(i,REQUEST_DELETE_HOMEWORK_ID);
In my HomeworkFragment class I want the user to be able to press a button in the options menu to delete this instance of HomeworkObject that was passed to HomeworkFragment by HomeworkListFragment. 在我的HomeworkFragment类中,我希望用户能够按选项菜单中的按钮来删除由HomeworkListFragment传递给HomeworkFragment的HomeworkObject实例。
Therefore, all that I need is to be able to have HomeworkFragment return a result containing the id of the HomeworkObject to HomeworkListFragment so that it can handle the deleting: 因此,我需要做的就是让HomeworkFragment将包含HomeworkObject的ID的结果返回给HomeworkListFragment,以便它可以处理删除操作:
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case android.R.id.home:
if(NavUtils.getParentActivityName(getActivity()) != null){
NavUtils.navigateUpFromSameTask(getActivity());
}
return true;
case R.id.menu_item_detail_delete_homework: //Deleting the Homework
Intent i = new Intent();
i.putExtra(EXTRA_DELETE_HOMEWORK_ID, mHomework.getId());
getActivity().setResult(Activity.RESULT_OK, i);
//getActivity().finish();
NavUtils.navigateUpFromSameTask(getActivity());
return true;
default:
return super.onOptionsItemSelected(item);
}
}
I have tried the following however the onActivityResult in HomeworkListFragment is never called! 我已经尝试了以下方法,但是从未调用HomeworkListFragment中的onActivityResult!
As you can see I tried to call getActivity().finish() but I read in other posts that this is not the right way.. I also tried navigateUpFromSameTask.. is this also wrong? 如您所见,我尝试调用getActivity()。finish(),但我在其他帖子中读到,这不是正确的方法。
Here's my HomeworkListFragment onActivityResult: 这是我的HomeworkListFragment onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(int requestCode, int resultCode, Intent 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();
}
}
UPDATE: 更新:
Am I not supposed to call: NavUtils.navigateUpFromSameTask(getActivity()); 我不应该打电话给我吗:NavUtils.navigateUpFromSameTask(getActivity()); ? ?
Strangely enough, I was missing out the super.onActivityResult(requestCode, resultCode, data); 奇怪的是,我错过了super.onActivityResult(requestCode,resultCode,data);
I had referenced the wrong line previously and could not figure out why. 我之前引用了错误的行,却无法弄清原因。 Now I have it! 现在我拥有了! But it took me two months... 但是花了我两个月的时间...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.