Wie die Rückkehr zu Vorherigen Fragments, indem Sie auf zurück(Nicht die Hardware-zurück-Taste)?
Habe ich nur 1 übung mit 2-Fragmente, die innerhalb es. Wenn Sie die Aktion starten, Ein Fragment zu starten. Wenn der Benutzer die Taste in sth und klicken Sie auf die Schaltfläche wird direkt an Fragment B. Also, was ich tun möchte, ist, dass durch hinzufügen eines "Zurück-Pfeil" sth wie diese <- an der oberen linken Ecke.
Tut, es hat zu tun mit FragmentManager.popBackStack()? Bitte um Rat ! Thx
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager manager=getSupportFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
first first=new first();
transaction.add(R.id.top,first);
transaction.commit();
}
}
first.java
public class first extends Fragment implements View.OnClickListener{
Button get_button;
EditText get_input_name;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_first,container,false);
get_input_name=(EditText)rootView.findViewById(R.id.input_name);
get_button=(Button)rootView.findViewById(R.id.submit);
get_button.setOnClickListener(this);
return rootView;
}
public void onClick(View v){
FragmentManager manager=getFragmentManager();
FragmentTransaction transaction=manager.beginTransaction();
two Two=new two();
Bundle bundle = new Bundle();
bundle.putString("input_name_value",get_input_name.getText().toString());
Two.setArguments(bundle);
transaction.replace(R.id.top,Two);
transaction.commit();
}
}
two.java
public class two extends Fragment implements View.OnClickListener {
TextView get_display_input;
ImageView get_back_button;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_two, container, false);
}
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
get_display_input=(TextView)getActivity().findViewById(R.id.display_input);
get_back_button=(ImageView) getActivity().findViewById(R.id.back_button);
Bundle bundle = getArguments();
String get_name = bundle.getString("input_name_value");
//int store_get_input=Integer.parseInt(get_name);
get_display_input.setText("You have entered "+get_name);
}
public void onClick(View v){
// WHAT TO DO HERE IN ORDER TO RETURN TO PREVIOUS Fragment when clicking the button?
}
}
Um genauer zu sein, entnehmen Sie bitte der Abbildung.
- Möglich, Duplikat der Wie das umzusetzen, onBackPressed() in Android-Fragmente?
- Mögliche Duplikate von Android-Fragment handle back button drücken
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie es mithilfe der popBackStack() Methode der
FragmentManager
, setzen Sie diese innerhalb deronClickListener
von Ihr zurück-Taste :Wenn Sie mit der Standard-zurück-button der toolbar.e, die home-Taste, dann kannst du tun, indem du diesen code in der
onOptionsItemSelected()
Methode IhrerActivity
:oder, wenn Sie wollen, die das gleiche Verhalten auf hardware-zurück-Taste drücken, dann überschreiben Sie die
onBackPressed()
Methode in IhrerActivity
Klasse wie folgt aus:popBackStackCode
ich.e, die erste, die ich vorgeschlagen, innerhalb deronClick
MethodeonClick
- Methode implementiert, in der übergeordnetenActivity
und nicht dieFragment
onClickListener
wie diese :get_back_button.setOnClickListener()
wenn Sie wollen, dass es in dertwo
Fragment und nicht die Aktivität.Check-out die Ausbildung docs hier -- sollten Sie geben Sie eine guten start.
Brauchen Sie nur diese eine einzige Zeile code!
Ja, es hat zu tun mit
FragmentManager.popBackStack();
Werfen Sie einen Blick hier, gibt es viele Methoden:
https://developer.android.com/reference/android/app/FragmentManager.html#popBackStack
Für mich
getFragmentManager().popBackStackImmediate();
machte genau das.In Ihrer Tätigkeit zu behandeln, hardware-zurück-Taste:
Also für den button-click-Methode: