Java 用碎片反压
我试图在一个包含3个片段的活动上实现onBackPressed。我的问题是,我在一段时间后实现了一个“再次按下退出”方法,但是当单击两次后退按钮时,它会返回到上一个片段,而不是退出。这发生在调用该片段时(即,如果我打开游戏并立即退出,它就像一个符咒一样工作)。我在MainActivity上的OnBackpress方法如下所示Java 用碎片反压,java,android,android-fragments,onbackpressed,Java,Android,Android Fragments,Onbackpressed,我试图在一个包含3个片段的活动上实现onBackPressed。我的问题是,我在一段时间后实现了一个“再次按下退出”方法,但是当单击两次后退按钮时,它会返回到上一个片段,而不是退出。这发生在调用该片段时(即,如果我打开游戏并立即退出,它就像一个符咒一样工作)。我在MainActivity上的OnBackpress方法如下所示 @Override public void onBackPressed() { if(getSupportFragmentManager().getBackSta
@Override
public void onBackPressed() {
if(getSupportFragmentManager().getBackStackEntryCount()!=0) {
getSupportFragmentManager().popBackStack();
}
this.findViewById(R.id.linearLayout1).setVisibility(View.VISIBLE);
if(mBackPressed + TIME_INTERVAL > System.currentTimeMillis() && getSupportFragmentManager().getBackStackEntryCount()==0){
super.onBackPressed();
System.exit(0);
this.finish();
}
else { Toast.makeText(getBaseContext(), "Press back once more to exit", Toast.LENGTH_SHORT).show(); }
mBackPressed = System.currentTimeMillis();
}
我基本上想检查用户是否在mainActivity布局中,这样我就可以避免使用popBackStack。任何解决方案都将不胜感激,如果这还不够,我可以提供更多信息
谢谢,
Bektaş如果您真的想退出,请完全忽略后台堆栈。使用此代码
@Override
public void onBackPressed() {
this.findViewById(R.id.linearLayout1).setVisibility(View.VISIBLE);
if(mBackPressed + TIME_INTERVAL > System.currentTimeMillis()){
this.finish();
return;
}
else {
Toast.makeText(getBaseContext(), "Press back once more to exit", Toast.LENGTH_SHORT).show();
}
mBackPressed = System.currentTimeMillis();
}
我想你可能会发现这个链接很有用 它说您可以使用这个paturn将引用添加到堆栈中
// Works with either the framework FragmentManager or the
// support package FragmentManager (getSupportFragmentManager).
getSupportFragmentManager().beginTransaction()
.add(detailFragment, "detail")
// Add this transaction to the back stack
.addToBackStack()
.commit();
这样我就不会对我的碎片进行任何反压操作。我试过这样做,结果留下了不可背压的片段,这可能是一种痛苦。这类似于我如何从一个活动变成一个片段,而这个片段并不能真正解决如何背压片段和活动。
@Override
public void onBackPressed() {
int count = getSupportFragmentManager().getBackStackEntryCount();
if (count == 0) {
getSupportFragmentManager().popBackStack(getSupportFragmentManager().getBackStackEntryCount(), getSupportFragmentManager().POP_BACK_STACK_INCLUSIVE);
android.app.AlertDialog.Builder builder = new android.app.AlertDialog.Builder(context);
builder.setCancelable(false);
builder.setMessage("Are you sure you want to exit?")
.setNegativeButton(android.R.string.no, null)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
(Main Activity Name).super.onBackPressed();
}
}).create().show();
} else {
super.onBackPressed();
}
}