2016-09-08 2 views
0

Ich habe Code, der ein Fragment auf einem Klickereignis hinzufügt. Das funktioniert und die Schaltfläche wird später aus der Anzeige entfernt, aber ich möchte, dass die Schaltfläche angezeigt wird, wenn der Benutzer zurück drückt und das Fragment verlässt. So etwas wie onBackStackUsed.Tun Sie etwas auf Fragment geht zurück

Ich habe versucht, so etwas zu finden, aber ich kann keinen Weg finden, es zu tun. Ist es überhaupt möglich?

final FloatingActionButton floatingActionButton = (FloatingActionButton)findViewById(R.id.live_support); 
floatingActionButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     getFragmentManager() 
      .beginTransaction() 
      .replace(R.id.live_support_frame, ChatWindowFragment.newInstance("XXX", "1"), "chat_fragment") 
      .addToBackStack("chat_fragment") 
      .commit(); 


     getFragmentManager().addOnBackStackChangedListener(
      new FragmentManager.OnBackStackChangedListener() { 
       @Override 
       public void onBackStackChanged() { 
        floatingActionButton.setVisibility(View.INVISIBLE); 
       } 
      } 
     ); 

    } 
}); 

Antwort

0

Aufschalten onBackPressed innerhalb der Tätigkeit wie folgt aus:

@Override 
public void onBackPressed() { 
    Fragment frag = getSupportFragmentManager().findFragmentByTag("fragment"); 
    if(frag instanceOf SearchFragment && frag.getTag().equals("chat_fragment")) { 
     floatingActionButton.setVisibility(View.INVISIBLE); // or visible 
    } else { 
     super.onBackPressed(); 
    } 
} 
0

Aufschalten onBackPress() -Methode in Aktivität und verwalten sie wie unten:

@Override 
public void onBackPressed() { 
    Fragment myFragment = getSupportFragmentManager().findFragmentByTag("fragment"); 
    if (myFragment instanceof SearchFragment && myFragment.isVisible()) { 
     //do what you want here 
    } 
} 

Glücklich Codierung :)

0
getFragmentManager().addOnBackStackChangedListener(
    new FragmentManager.OnBackStackChangedListener() { 
     @Override 
     public void onBackStackChanged() { 
      int count = getFragmentManager().getBackStackEntryCount(); 

      if (count == 0) { 
       floatingActionButton.show(); 
      } else { 
       floatingActionButton.hide(); 
      } 
     } 
    } 
); 

onBackStachChanged sowohl genannt beim Hinzufügen und Stapeln oder Entfernen.
Also ich überprüfe nur, ob es schon einen gibt oder nicht.

Verwandte Themen