A と B の 2 つのアクティビティがあります。B は透明なパススルー アクティビティで、A は見られます。ボタンAを押してBを殺したい。
これが私がこれまでに試したことです:
B obj=new B();
obj.finish();
B のオブジェクトを作成し、それを殺そうとしました。それはうまくいきませんでした。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("keep", true);
startActivity(intent);
このコードが行うことになっているのは、最上位のアクティビティである B をクリアし、B を再度呼び出すことです。ただし、今回は、B が数秒後に自分自身を殺すような値を渡しています。
これは、何らかの理由でアクティビティのインスタンスをさらに積み上げただけです。または、少なくとも、多くの透明なアクティビティにより画面がピクセル化されたため、それが起こったと思います.
これが私のマニフェストです:
<activity
android:name="com.xxx.xxx.B"
android:excludeFromRecents="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:clearTaskOnLaunch="true" >
</activity>
アクティビティが表示されたときにボタンを押して、2回目にそれを殺すにはどうすればよいですか? 作成部分は明らかに処理されます。アクティビティ B がポップアップします。B が一番上にあるので、それを削除したいと思います。
編集
チェックボックスでこれを試しました。コードは次のとおりです。
enable.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
finishActivity(0);
Intent intent = new Intent(A.this, B.class);
if (enable.isChecked()) {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("keep", true);
intent.putExtra("value", 10);
startActivityForResult(intent, 0);
}
else
{
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("keep", false);
startActivityForResult(intent, 0);
}
}
});
有効にすると、アクティビティが呼び出され、正常に動作します。しかし、彼らは積み上げ続けます。チェックボックスにチェックを入れたり外したりしても、A->B->A->B のようにはいきません。A→B→BB→BBBです。