簡體   English   中英

片段的onActivityResult不被調用

[英]Fragment's onActivityResult is not Called

我有兩個片段:HomeworkListFragment和HomeworkFragment。 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);

在我的HomeworkFragment類中,我希望用戶能夠按選項菜單中的按鈕來刪除由HomeworkListFragment傳遞給HomeworkFragment的HomeworkObject實例。

因此,我需要做的就是讓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);
    }
}

我已經嘗試了以下方法,但是從未調用HomeworkListFragment中的onActivityResult!

如您所見,我嘗試調用getActivity()。finish(),但我在其他帖子中讀到,這不是正確的方法。

這是我的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();    
    }
}

更新:

我不應該打電話給我嗎:NavUtils.navigateUpFromSameTask(getActivity());

奇怪的是,我錯過了super.onActivityResult(requestCode,resultCode,data);

我之前引用了錯誤的行,卻無法弄清原因。 現在我擁有了! 但是花了我兩個月的時間...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM