2016-09-05 106 views
1

我有HomeActivity它包含viewpager中的许多片段。现在,我有2个片段onActivityResult在片段不叫作childFragment

  1. AddBalanceFragment

  2. AddSubscriptionFragment

我打电话从两个片段onActivityResult并且都具有相同的代码。 onActivityResult首先进入HomeActivity的onActivityResult做工精细用AddBalanceFragment它去addBalanceFragment的onActivityResult,但是当我试图同时与AddSubscriptionFragment 也去AddBalanceFragment的onActivityResult

//nestedfragments contains 4 fragments 3rd is addBalanceFragment and 4th AddsubsprtionFragment 


// HomeActivity.java 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.e(TAG, "onActivityResult"); 
    // notifying nested fragments (support library bug fix) 
    final FragmentManager childFragmentManager = getSupportFragmentManager(); 

    if (childFragmentManager != null) { 
     final List<Fragment> nestedFragments = childFragmentManager.getFragments(); 

     if (nestedFragments == null || nestedFragments.size() == 0) return; 

     for (Fragment childFragment : nestedFragments) { 
      if (childFragment != null && !childFragment.isDetached() && !childFragment.isRemoving()) { 

       childFragment.onActivityResult(requestCode, resultCode, data); 
      } 
     } 
    } 
} 

AddBalanceFragment.java

public void onActivityResult(int requestCode, int resultCode, Intent data) { 


    if (requestCode == 1001) { 
     if (resultCode == -1) { 
     } 
     } 

AddSubscriptionFragment。 java

public void onActivityResult(int requestCode, int resultCode, Intent data) { 


    if (requestCode == 1001) { 
     if (resultCode == -1) { 
     } 
     } 

回答

0

你能确保你在片段的onActivityResult方法调用

super.onActivityResult(requestCode, resultCode, data); 

你不应该甚至需要手动调用这些方法上的活动

+0

我打电话了吧'super.onActivityResult(requestCode,resultCode为,数据) ;'在HomeActivity的onActivityResult不在片段的onActivityResult –

+0

为什么你不在片段上调用它? – Deliganli

1

我与静态变量状态:)

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    Log.e(TAG, "onActivityResult HomeActivity"); 
    // notifying nested fragments (support library bug fix) 

    final List<Fragment> nestedFragments = getSupportFragmentManager().getFragments(); 
    for (int i = 0; i < nestedFragments.size(); i++) 
     if (nestedFragments == null || nestedFragments.size() == 0) return; 

    for (Fragment childFragment : nestedFragments) { 
     if (childFragment != null && !childFragment.isDetached() && !childFragment.isRemoving()) { 
      Log.e(TAG, "childFragment :" + childFragment.toString()); 
      // Log.e(TAG, "childFragment :"+childFragment.getParentFragment().getTag()); 

      if (state.equalsIgnoreCase("AddBalance")) { 
       if (childFragment.toString().contains("AddBalanceFragment")) { 
        childFragment.onActivityResult(requestCode, resultCode, data); 
       } 
      } 
      if (state.equalsIgnoreCase("AddSubcription")) { 
       if (childFragment.toString().contains("AddSubscriptionFragment")) { 
        childFragment.onActivityResult(requestCode, resultCode, data); 
       } 
      } 


     } 
    } 


} 
相关问题