片段从第二个片段返回到第一个片段

我有viewpager选项卡片段,并从按钮上的一个tabb片段单击它打开另一个片段,另一个片段我想添加背压的事件,因为我做backpress它退出应用程序,因为我已经写在我的根背面退出代码的代码片段和我不想要这个代码来调用我的另一个第二个片段,因为我只需要一步回到我的前一个片段由于这里是代码

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

在支付历史中,我打电话回来按下覆盖功能

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

并点击Paymenthistory它从应用程序调用退出代码。 我希望它回到以前的片段。 正如我写这个片段代码,但不工作。 任何人都有想法如何将第二个嵌套片段退回到以前的片段。

我的MainActivity中的OnBackPress代码

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

3 Solutions collect form web for “片段从第二个片段返回到第一个片段”

将你的片段添加到backstack,然后在你的onBackPressed方法中做这样的事情:

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

欲了解更多信息,请参阅

希望这是你正在寻找,它可以帮助你。

试试这个(而不是“替换”使用“添加”)

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

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

如果片段内的片段使用这个代码onbackpreesed方法

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

每个片段存储在一个堆栈中

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

这是我的项目工作

Kotlin language will be the best programming language for Android.