0

私は、MainActivityを呼び出すボタンがあるアプリケーションを開発していますActivity1(このアクティビティのテーマはダイアログに設定されていますandroid:theme="@android:style/Theme.Holo.Light.Dialog) 。MainActivityそうしないActivity1と、ホーム画面の上に表示されます。

私のActivity1では、私の他のアクティビティ、つまりActivity2が呼び出されます。これもActivity1ダイアログテーマと同じです。今から、ダイアログテーマのない通常のアクティビティをActivity2呼び出しました。Activity3

MainActivity今、私はからを終えたいですActivity2

どうすればそれを達成できますか?

あらゆる種類の助けをいただければ幸いです。

4

6 に答える 6

4

各アクティビティを開始して、アクティビティstartActivityForResult()の結果を確認できます。したがって、最初のアクティビティを閉じたい場合は、各アクティビティの特定の結果を設定して を呼び出す必要がありますfinish()。各アクティビティでチェックインresultするonActivityResult()ため、指定した結果が表示された場合は、このアクティビティを閉じる必要があります (または、最初のアクティビティでない場合は結果を設定します)。

最初の活動で、2番目に始めたい

Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, 0);

2番目の活動では、3番目に始めたい

Intent i = new Intent(Activity2.this, Activity3.class);
startActivityForResult(i, 0);

だから、3番目の活動では4番目に始めてお互いを締めたいと思っています

Intent i = new Intent(Activity3.this, Activity4.class);
startActivity(i);

setResult(RESULT_OK);
finish();

そして、各アクティビティ(1、2)でメソッドを確認する必要がありますonActivityResult()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK) {
        setResult(RESULT_OK);
        finish();
    }
}
于 2013-04-24T19:06:05.817 に答える
1

Activity2、Activity1、そして MainActivity を閉じますか?

その場合は、アクティビティごとに startActivityForResult と onActivityResult を使用し、返された結果が現在のアクティビティを閉じてさらに渡すことを要求するものかどうかを確認できます。

そうでない場合は、アクティビティ間でバインドされるサービスを使用して、そのようなことを行うことができます。

于 2013-04-24T19:22:40.950 に答える
0

MainActivity私が理解していることから、開始時に終了したいと考えていますActivity 3。この場合、他の 2 つもクリアしても問題Activitiesない場合は、Intent flag

Intent intent (Activity2.this, Acitivity3.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

私があなたを正しく理解していれば、これはあなたが望むことを達成します。スタックからActivity 3他のすべてをクリアしながら開始されます。Activities

ドキュメント

于 2013-04-24T19:23:40.193 に答える
0

1 つのコマンドでアプリ全体をシャットダウンできない理由は、Android システムが発生することを期待する作業フローではないと思います。できることは、startActivityForResult を使用してソースとステータスを確認し、アクティビティをカスケードで閉じることです。

例を次に示します: Android で「startActivityForResult」を管理するには?

次のアクティビティを開始するアクティビティごとに特定のコードを作成できます。

于 2013-04-24T19:26:49.147 に答える
0

アクティビティを開始するときに、アクティビティを新しいアクティビティに追加で送信します。例えば:

主に:

  Intent in= new Intent("your action");
  in.putExtra("preAct",this);
  startActivity(in);

次に、preAct を使用して終了します。

新しいアクティビティで:

 Activity prev = (Activity)this.getIntent().getSerializableExtra("preAct");

その後、必要なすべて

 prev.finish()

好きなときに終わらせる

于 2013-04-24T19:27:06.537 に答える
0

アクティビティのnoHistory属性を確認します。true に設定すると、ユーザーはこのアクティビティを離れた後、そのアクティビティに戻ることができなくなります。

于 2013-04-24T19:37:11.373 に答える