25

、、、の4つのアクティビティがAct1あります。Act1のボタンはAct2を開き、Act2のボタンはAct3を開き、Act3のボタンはAct4を開きます。Act2Act3Act4

私は2つのことをしたい:

  1. ユーザーをAct1に誘導するボタンがAct4にあります。問題は、ユーザーがAct1をクリックして戻ったときに、Act4を開く代わりにアプリを閉じたいということです。

  2. ユーザーが選択したときにすべてのアクティビティでメニューの「終了」を選択しました。前のアクティビティに戻るのではなく、アプリを閉じたいと思います。

使用してみfinish();ましたが、要件を満たしていませんでした。

4

12 に答える 12

40

Act4'th Menu.xml'の終了ボタンで以下のコードを使用します-

Intent intent = new Intent(Act4.this, Act1.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("EXIT", true);
startActivity(intent);

そして、最初のアクティビティのonCreate()メソッドに以下のコードを入れてください-

if (getIntent().getBooleanExtra("EXIT", false)) 
{
    finish();
}

これでアプリが終了します。

于 2012-06-18T10:53:31.510 に答える
10

このリンクをチェックしてください:

ここをクリック

あなたが使用することができます:

@Override
public void onBackPressed()
{
     moveTaskToBack(true);
}

アプリを閉じるためのすべてのアクティビティで。

于 2012-06-18T10:49:12.253 に答える
5
Intent intent = new Intent(Act4.this, Act1.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

前のアクティビティに戻る前に、フラグをクリアしてください。それはあなたを助けるかもしれません。

于 2016-12-27T08:52:58.767 に答える
3

次のアクティビティに移動するときに前のアクティビティを終了するということは、4番目のアクティビティのボタンクリックイベントから最初のアクティビティを開始するためのコードのfinish();後に​​書き込み、以下のコードを書き込むことを意味します。startactivity(intent);

Intent in1=new Intent(Act4.this, Act1.class);
startActivity(in1);
finish();

そして、すべてのアクティビティの終了ボタンのClickイベントに以下のコードを記述します。

finish();
于 2012-06-18T11:34:04.683 に答える
3

このコードをアプリに配置します。

moveTaskToBack(true);
android.os.Process.killProcess(Process.myPid());
System.exit(1);
于 2017-10-13T12:12:36.903 に答える
1

android:noHistory = "true"AndroidManifest.xmlファイルで使用する

    <activity
        android:name=".Act1"
        android:noHistory="true" />
    <activity
        android:name=".Act2"
        android:noHistory="true" />
    <activity
        android:name=".Act3"
        android:noHistory="true" />
    <activity
        android:name=".Act4"
        android:noHistory="true" />
于 2017-07-27T06:17:15.120 に答える
0

私が使用するアプローチは、すべての子アクティビティをで開始することstartActivityForResultです。次に、任意の子を終了するときにputExtra( "STATE"、some_value)を実行し、状態値を使用して、親を介して何を行うかを決定できます。

深い子からアプリを終了する場合、「STATE」は「exit」になり、階層内の各子は「exit」のStringExtraを取得し、putExtra( "STATE"、 "exit")を実行して呼び出します。 finish()すると、アプリは最後にfinish()を呼び出します。これを使用して、任意の状態を実現できます。

startActivityForResultを使用してこの方法でメッセージを渡すと、厄介な参照を子アクティビティに渡す必要がなくなり、アプリの目的の状態を設定するためのアプローチが簡素化されます。

于 2013-12-24T15:52:06.260 に答える
0

(アプリケーションアクティビティスタック内に)別のアクティビティがある場合は、を使用finish()して現在のアクティビティを終了できます。

ただし、back関数も、アプリケーションアクティビティスタックから現在のアクティビティを削除することを想定しています。

私の経験では、バックスタック(アプリケーションアクティビティスタック)のアクティビティに依存することは非常に信頼できません。そのため、私は深くなると各アクティビティを終了していました。

あなたの場合:

Act 1 -> exit -> Act 2 -> exit -> Act 3 -> exit -> Act 4 -> exit -> Act 1 -> exit 

上記のメソッドは、すべてのアクティビティを終了します。

ただし、バックグラウンドでコードを実行する場合は、「アクティビティ」ではなく「サービス」に依存することをお勧めします。割り当てられた作業を行った後、「サービス」を終了させることができます。

于 2014-06-05T02:18:35.053 に答える
0
Do a 
<code>

try
{
finalize();
finish
}
catch(Exception error)
{
error.printStackTrace();
}
//This would exit your App neatly
</code>
于 2015-11-18T09:41:01.633 に答える
0

私はこの方法を使用します:
1。残りのアクティビティを閉じる最初のアクティビティで静的アクティビティを作成します。
2.次に、このような静的メソッドで呼び出すと、どこから呼び出してもアプリが閉じます。

public static Activity activity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    activity=this;
}
public static void CloseApp(){
    activity.finish();
} 
于 2017-05-17T17:36:19.863 に答える
-1

これをトレイ

Intent intent =new Intent(MainActivity.this, ClassName.class);
  finish
startActivity(intent);
于 2016-08-13T19:59:52.237 に答える
-1

Activity1インテントの使用を開始し、の呼び出しfinishAffinity()を試してください。onBackPressed()Activity1

于 2016-08-14T06:29:27.457 に答える