我有viewpager选项卡片段,并从按钮上的一个tabb片段点击它打开另一个片段和另一个第二片段我想添加backpress事件,因为我正在退出它退出应用程序,因为我已经编写了Double back press退出代码在我的根片段,我不希望这个代码调用我的另一个第二个片段,因为我只想回到我以前的片段一步 这里是代码
R.id.Recharge -> {
val pl = Payment_History()
fragmentTransaction = fragmentManager!!.beginTransaction()
fragmentTransaction.replace(R.id.frame_container, paypal)
fragmentTransaction.addToBackStack(null)
fragmentTransaction.commit()
}
在付款记录中,我正在呼叫Back press override功能
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)
}
}
答案 0 :(得分:0)
将您的片段添加到backstack,然后在onBackPressed方法中执行以下操作:
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack();
} else {
this.finish();
}
}
有关详细信息,请参阅this
希望这是你正在寻找的,它会帮助你。
答案 1 :(得分:0)
试试这个(而不是“替换”使用“添加”)
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();
}
}
答案 2 :(得分:0)
如果片段内的片段使用此代码onbackpreesed方法
.fadein img
{
...
z-index: -1;
position:absolute; // <-- this is the important change
left:0;
right:0;
...
}
每个片段存储在堆栈中
@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();
}
}
它在我的项目中起作用
答案 3 :(得分:0)
我在活动中使用了这个
第1步:
为布尔值
创建了一个全局变量private boolean doubleBackToExitPressedOnce = false;
第2步:
然后在onBackPress()活动方法
我做了这个
@Override
public void onBackPressed() {
if (mViewPager.getCurrentItem() > 0) {
//if any tab selected instead of tab 1
mDoubleBackToExitPressedOnce = false;
} else if (mViewPager.getCurrentItem() == 0) {
//if tab 1 selected
mDoubleBackToExitPressedOnce = true;
if (mDoubleBackToExitPressedOnce)
super.onBackPressed();
}
mViewPager.setCurrentItem(0);//go to tab 1
}