8

まあ、それは私の問題です。

ユーザーが背面下部を押したときに、開いているすべてのアクティビティのスタックを削除する必要があります。

@Override
public void onBackPressed(){
    Intent i = new Intent(context, CrisolMainApp.class);
    i.putExtra(CrisolMainApp.CERRAR_APP, true);
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(i);
}

ポイントは、これはほとんどの携帯電話で機能するということですが、昨日、Samsung Galaxy Mini (android 2.3.3) で試してみましたが、機能しません!! アクティビティのスタックを削除していません。

誰でも理由を知っていますか?

編集:ドキュメントをチェックしていたところ、「Intent.FLAG_ACTIVITY_CLEAR_TASK」がAPI 11に追加されたことがわかりました(私のSamsung Galaxy MiniはAndroid 2.3.3で動作しているため、API 10).......私はわかりませんが、それが問題だと思います。

11未満のAPIでも同じように動作させる方法を知っている人はいますか?

私はこれらのフラグを追加しようとしていましたが、どちらも機能していません:

@Override
public void onBackPressed(){
    Intent a = new Intent(this, CrisolMainApp.class);
    a.putExtra(CrisolMainApp.CERRAR_APP, true);
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
    a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    a.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
    startActivity(a);
    finish();
}

そして私も試しました:

@Override
    public void onBackPressed(){
        Intent a = new Intent(this, CrisolMainApp.class);
        a.putExtra(CrisolMainApp.CERRAR_APP, true);
        a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        a.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(a);
        finish();
    }
4

5 に答える 5

3

簡単な修正は、すべてのアクティビティに xml 属性android:noHistory="true"を追加することです。これは、ユーザーがそのアクティビティを離れるとすぐにアクティビティがなくなり、バック スタックが保存されないことを意味します。

于 2013-01-15T16:39:17.093 に答える
1

あなたは活動を終えていません。

Intent i = new Intent(context, CrisolMainApp.class);
i.putExtra(CrisolMainApp.CERRAR_APP, true);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
finish();
于 2013-01-15T15:44:04.570 に答える
0

インテント 'i' に addFlags を追加すると、インテント ACTION_SEND は機能しませんが、応答 createChooser() に addFlags を追加すると、ACTION_SEND のインスタンスを 1 つだけ作成します。

 if (i == null) i = new Intent();
            i.setAction(Intent.ACTION_SEND);
            i.putExtra(Intent.EXTRA_STREAM, getImageUri());
            i.setType(Constantes.IMAGE_STREAM);
            startActivity(Intent.createChooser(i, messageShare).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
于 2016-05-12T17:44:51.433 に答える
-1

これらのフラグを追加してみてください。

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //use this if you want to clear the stack
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // use this if you don't want to clear your home activity

これにより、前面に表示されるこのアクティビティを除く、スタック内のすべてのアクティビティがクリアされます。使用する必要はありませんfinish();

于 2013-01-15T16:07:55.380 に答える