Fragmento Back stack del segundo fragment al primer fragment

Tengo un fragment de tabulador de viewpager y de un fragment de tabulador en el button, click abrir otro fragment y otro segundo, quiero agregar un evento de retroceso ya que estoy haciendo una operación de retroceso saliendo de la aplicación, ya que he escrito el código de Doble, presione el código de salida en mi raíz fragment y no quiero este código para llamar a mi otro segundo fragment, ya que quiero simplemente un paso atrás a mi fragment anterior, ya que aquí está el código

R.id.Recharge -> { val pl = Payment_History() fragmentTransaction = fragmentManager!!.beginTransaction() fragmentTransaction.replace(R.id.frame_container, paypal) fragmentTransaction.addToBackStack(null) fragmentTransaction.commit() } 

En el historial de pagos llamo a la function de anulación de la function Volver atrás

 override fun onBackPressed(): Boolean { super.onBackPressed() } 

y onclick en Paymenthistory llamó al código de salida de la aplicación. quiero que vuelva al fragment anterior. Como escribí este código de fragment pero no funcionaba. Cualquiera tiene idea de cómo hacer una copy de security del segundo fragment nested en un fragment anterior.

Mi código OnBackPress en mi MainActivity

  override fun onBackPressed() { // TODO Auto-generated method stub try { if (getFragmentManager().getBackStackEntryCount() == 0) { if (doubleBackToExitPressedOnce) { //super.onBackPressed(); val startMain = Intent(Intent.ACTION_MAIN) startMain.addCategory(Intent.CATEGORY_HOME) startMain.flags = Intent.FLAG_ACTIVITY_NEW_TASK pref!!.setLoggedIn(true) startMain.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK startMain.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP startActivity(startMain) return } this.doubleBackToExitPressedOnce = true Toast.makeText(this, "Please click again to exit", Toast.LENGTH_SHORT).show() Handler().postDelayed({ doubleBackToExitPressedOnce = false }, 2000) } }catch (e:Exception){ println("homemessage"+ e.message) } } 

Agregue su fragment a backstack y luego en su método onBackPressed haga algo como esto:

 @Override public void onBackPressed() { if (getSupportFragmentManager().getBackStackEntryCount() > 0) { getSupportFragmentManager().popBackStack(); } else { this.finish(); } } 

Para más información vea esto

Espero que esto sea lo que estás buscando y te ayude.

Pruebe esto (en lugar de "replace" use "agregar")

 fragmentTransaction = fragmentManager!!.beginTransaction() fragmentTransaction.add(R.id.frame_container, paypal) fragmentTransaction.addToBackStack(null) fragmentTransaction.commit() 

y

 @Override public void onBackPressed() { if (getSupportFragmentManager().getBackStackEntryCount() > 0) { getSupportFragmentManager().popBackStack(); } else { this.finish(); } } 

si el fragment dentro del fragment vuelve a usar este código en el método de copy de security

  @Override public void onBackPressed() { DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); if(getFragmentManager().getBackStackEntryCount() == 1) { new AlertDialog.Builder(this) .setIcon(android.R.drawable.ic_dialog_alert) .setTitle("Check out") .setMessage("want to do check out?") .setPositiveButton("Yes", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { closeApp(); } }) .setNegativeButton("No",null) .show(); } else { super.onBackPressed(); } } 

cada fragment de la tienda en una stack

  FragmentManager ff=getFragmentManager(); ff.beginTransaction().replace(R.id.main_content,new home()).addToBackStack(null).commit(); 

es trabajo en mi proyecto

Usé esto en Activity

Paso 1:

Creó una variable global para boolean

 private boolean doubleBackToExitPressedOnce = false; 

Paso 2:

Luego, en el método de actividad onBackPress ()

hice esto

 @Override public void onBackPressed() { if (mViewPager.getCurrentItem() == 1) { //if tab 2 doubleBackToExitPressedOnce = false; } else if (mViewPager.getCurrentItem() == 2) { //if tab 3 doubleBackToExitPressedOnce = false; } else if (mViewPager.getCurrentItem() == 0) { //if tab 1 doubleBackToExitPressedOnce = true; if (doubleBackToExitPressedOnce) super.onBackPressed(); } mViewPager.setCurrentItem(0);//go to tab 1 }