1

Ich habe HomeActivity, die viele Fragmente in Viewpager enthält. Jetzt habe ich zwei FragmenteonActivityResult in Fragmenten nicht als childFragment

  1. AddBalanceFragment

  2. AddSubscriptionFragment

Ich rufe onActivityResult von beiden Fragmente, und beide haben denselben Code. es geht auch an AddBalanceFragment des 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 onActivityResult zuerst mit AddBalanceFragment der zu HomeActivity onActivityResult adaequat geht geht es um addBalanceFragment des onActivityResult, aber wenn ich mit AddSubscriptionFragment zu gleichen versuchen. Java

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


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

Antwort

0

Können Sie sicher sein, dass Sie

super.onActivityResult(requestCode, resultCode, data); 

auf Fragments onActivityResult Methoden aufrufen.

Sie sollten nicht einmal diese Methoden manuell auf die Aktivität aufrufen müssen

+0

Ich rufe 'super.onActivityResult (requestCode, Result, Daten) ; 'in HomeActivity onActivityResult nicht in Fragment onActivityResult –

+0

Warum rufen Sie es nicht auf Fragments? – Deliganli

1

Ich habe es mit statischen Variablen Zustand :)

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


     } 
    } 


} 
Verwandte Themen