5

ホームボタンをプログラムしたいのでActivities、1つを除いてスタック内のすべてを削除します。私はここのようにそれをしました:Androidの最初のものを除いてスタック上のすべてのアクティビティを終了する方法

public boolean onOptionsItemSelected(MenuItem item) {
    int itemId = item.getItemId();
    switch (itemId) {
    case android.R.id.home:
        Intent intent = new Intent(this, AMainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(intent);
        break;
...

Activitiesしかし、この方法は、すべて(最初のものを含む)を削除して最初のものを再開するため、私には適していません。たとえば、ユーザーのパスワードをチェックインするとonCreate()、もう一度尋ねられます。スタックからすべてを削除する方法Activities、しかし最初のものは「触れられない」のでしょうか?

4

3 に答える 3

2

はい、のドキュメントによるとIntent.FLAG_ACTIVITY_CLEAR_TOP

上記の例で現在実行中のアクティビティBのインスタンスは、ここで開始している新しいインテントをonNewIntent()メソッドで受け取るか、それ自体が終了して新しいインテントで再起動します。起動モードが「複数」(デフォルト)であると宣言されていて、同じインテントでFLAG_ACTIVITY_SINGLE_TOPを設定していない場合は、終了して再作成されます。他のすべての起動モードの場合、またはFLAG_ACTIVITY_SINGLE_TOPが設定されている場合、このインテントは現在のインスタンスのonNewIntent()に配信されます。

したがって、追加Intentのフラグを使用します。

intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

そして、あなたの活動は再現されるべきではありません。代わりに、への呼び出しを介して新しいインテントが配信されonNewIntent()ます。

于 2013-02-07T18:17:35.240 に答える
2

マニフェスト.xmlのAMainActivityのActivityタグに次のプロパティを追加します。

android:launchMode="singleTop"
于 2013-02-07T18:21:23.817 に答える
0

ExcludeFromRecent = "true"スタックに入れたくないマニフェストのアクティビティ宣言でフラグを使用できます。

于 2013-02-07T18:13:04.953 に答える