0

I have two Fragment's: HomeworkListFragment and HomeworkFragment. HomeworkFragment will start an instance of HomeworkFragment like so:

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.

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:

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

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?

Here's my 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()); ?

waylonion
  • 6,866
  • 8
  • 51
  • 92
  • Did you call `super.onActivityResult(requestCode, resultCode, data);` in the activity that hosts the HomeworkListFragment? Check this answer for [details](http://stackoverflow.com/a/6147919/1270276). – hfann Jul 27 '14 at 17:09
  • Oh, yes I did.. it also didn't work when I added it. – waylonion Jul 27 '14 at 17:11

1 Answers1

0

Strangely enough, I was missing out the 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...

waylonion
  • 6,866
  • 8
  • 51
  • 92