0

我正在尝试在具有 3 个片段的活动上实现 onBackPressed。我的问题是我在一段时间后实现了“再次按下退出”,但是当单击后退按钮两次时,它返回到上一个片段,而不是退出。当调用该片段时会发生这种情况(即,如果我打开游戏并立即退出,它就像一个魅力一样)。我在 MainActivity 上的 onBackPressed 方法如下所示;

@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。任何解决方案将不胜感激,如果这还不够,我可以提供更多信息。

谢谢,贝克塔斯

4

3 回答 3

1

如果您真的想退出,请完全忽略后台堆栈。使用此代码。

@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();
}
于 2015-05-14T19:08:37.970 回答
0

我想你可能会发现这个链接很有用 http://developer.android.com/training/implementing-navigation/temporal.html

它说你可以使用这个 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();
于 2015-05-14T19:17:51.673 回答
-1
@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();


    }
}
于 2015-10-12T04:59:10.610 回答