0

3 つのフラグメントを持つアクティビティに onBackPressed を実装しようとしています。私の問題は、しばらくしてから「もう一度押す」方法を実装したことですが、戻るボタンを2回クリックすると、終了せずに前のフラグメントに戻ります。これは、そのフラグメントが呼び出されたときに発生します (つまり、ゲームを開いてすぐに終了すると、魔法のように機能します)。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

このパターンを使用してスタックへの参照を追加できると書かれています

// 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 に答える