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

我以前提到的錯誤路線,無法找出原因。現在我擁有了!

相關問題