0

「新しいゲーム」と「再開」ボタンを備えた MenuActivity があります。「新しいゲーム」は FireRoomActivity を開始します。

public void newGame(View view){
        Intent intent = new Intent(this, FireRoomActivity.class);
        this.finish();  
        startActivity(intent);
    }

FireRoomActivity では、onBackPressed がオーバーライドされて MenuActivity に戻ります。

@Override
public void onBackPressed() {
    super.onBackPressed();
    Intent inMain=new Intent(this, MenuActivity.class);
    startActivity(inMain);
}

MenuActivity の「再開」ボタンで FireRoomActivity を再開する必要がありますが、これはアプリを終了するだけです。

public void resume(View view){
    this.finish();
}

Q1) 私は何を間違っていますか?

Q2) 3 番目のアクティビティ "ThreeActivity" を追加し、FireRoomActivity (FireRoomActivity の終了) から開始し、この "ThreeActivity" で onBackPressed をオーバーライドして MenuActivity に移動すると、どうすればよいですか?

私はAndroidのライフサイクルに慣れていないので、詳細な返信をいただければ幸いです

4

5 に答える 5

2

1) 自然の秩序を乱している。「New game」メソッドで「finish」を呼び出す必要はありません。

戻るキーを押したときに戻ることができるように、アクティビティをスタックに残すだけです。戻るキーが押されたときに新しいアクティビティを起動する必要はありません。これは、既に持っている MenuActivity に戻るためです。

再開メソッドは終了を呼び出しているため、メニューを閉じています。メニューを「終了」する代わりに、コードを挿入してゲームを再開します。

2) アクティビティのライフサイクルを学びます。これを理解すると、これをはるかにうまく処理できます。アクティビティに戻る場合は、別のアクティビティを開始するときに、そのアクティビティを終了する必要はありません。それらをスタックのように考えてください。アクティビティをスタックに配置し、[戻る] ボタンを押すと、アクティビティが再びポップされます。アクティビティを完全に終了し、二度と見たくない場合にのみ、アクティビティを終了します。

于 2013-11-26T06:40:41.527 に答える
1
**Try This**
======================
public void onBackPressed() {
Intent i = new Intent(getApplicationContext(), MenuActivity.class);
            i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
            startActivity(i);
            finish();
}
于 2013-11-26T06:33:56.893 に答える
0

super.OnBackPressed()onBackPressed オーバーライドされたメソッドで削除します。

うまくいかない場合は、これを試してください:

再開ボタンのクリックの構文で FireRoomActivity を開始します

Intent i = new Intent(getActivity(), FireRoomActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
startActivity(i);
于 2013-11-26T06:40:16.930 に答える
0

試す:

@Override
public void onBackPressed() {
    Intent inMain=new Intent(this, MenuActivity.class);
    startActivity(inMain);
}  

onBackPressed() 自体がアクティビティを終了します。この場合、FireRoomActivity で「戻る」ボタンを押すと、常に一時停止します。したがって、終了したい場合は、finish(); を呼び出す必要があります。

于 2013-11-26T06:34:06.967 に答える
0

ThreeActivity でこれをオーバーライドします

@Override
public void onBackPressed() {
    Intent intent=new Intent(this, MenuActivity.class);
    startActivity(intent);
}

詳細については、このリンクを参照してください

于 2013-11-26T06:48:56.197 に答える