0

Android アプリケーションで 3 つのアクティビティがありました。各アクティビティで戻るボタンを押すと、アプリケーションが終了します。次のコードを使用します。

3 番目のアクティビティから戻ると、アプリケーションは正常に終了しますが、アプリ アイコンをクリックしてアプリケーションを再起動すると、3 番目のアクティビティが再び起動します。でも、そんな「再始動」のタイミングで本業を立ち上げる必要があります。

「onResume」にコードを書いてみましたが、うまくいきません。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    {
        moveTaskToBack(true);
        return true;
    }
        return super.onKeyDown(keyCode, event);
}

私を助けてください。前もって感謝します

4

6 に答える 6

2

次の方法を使用してこの問題を解決できます。3番目のアクティビティクラスに次のコードを配置します。

    @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    startActivity(new Intent(getBaseContext(), YourSecondActivity.class));
    finish();
}

同じように、2番目のアクティビティクラスに入れることができます

    @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    startActivity(new Intent(getBaseContext(), YourFirstActivity.class));
    finish();
}

最後に、これをメインクラスに入れることができます

    @Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    super.onBackPressed();
    finish();
}
于 2013-05-10T06:02:51.717 に答える
1
  1. A、B、C の 3 つのアクティビティを作成する
  2. アクティビティ A では、startActivity(B) を呼び出すときに、finish() も呼び出します。例 -

     public void onButtonClick() // Some method 
     {
        startActivity(intentForB);
        finish();
    }
    
  3. 同様に、BからCに行くとき -

     public void onButtonClick()
     {
        startActivity(intentForC);
        finish();
     }
    
  4. ユーザーがアクティビティ C にいて、戻るボタンを押すと、アプリケーションが閉じられます (戻るボタンの処理を明示的に記述する必要はありません)。

お役に立てれば。

于 2013-05-10T05:43:20.300 に答える
0

AndroidManifest.xml でこのコードを使用し、最初の起動アクティビティでandroid:clearTaskOnLaunch="true"を使用します。

 <activity
        android:name="com.example.package.SplashActivity"
        android:label="@string/app_name"
        android:clearTaskOnLaunch="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

キー イベントを使用する場合は、アクティビティで次のコードを使用します。

@Override
    public boolean dispatchKeyEvent(KeyEvent event)
    {
        boolean result = false;
        switch(event.getKeyCode())
        {
            case KeyEvent.KEYCODE_BACK:
                finish(); // or moveTaskToBack(true);
                result = true;
                break;
             default:
                result= super.dispatchKeyEvent(event);
                break;
         }
        return result;
    }
于 2013-05-10T05:32:30.237 に答える
0

moveTaskToBack()このアクティビティを含むタスクをアクティビティ スタックの後ろに移動します。

それを行い、あなたのすべての活動OnBackpressed()で使用してください。finish()(戻るボタンを押したときにすべてのアクティビティを終了したいと言ったため)

public void OnBackpressed()
{
 finish();
}

簡単に言えば、コードで次のようにします。

activity 1

Intent intent=new Intent(activity1.this,activity2.class);
startActivity(intent);
finish();

activity 2

Intent intent=new Intent(activity2.this,activity3.class);
startActivity(intent);
finish();

最初の 2 つのアクティビティでこれを使用した場合、3 番目のアクティビティでは を処理する必要はありませんOnBackpressed()OnBackpressed()ユーザーが戻るキーを押したことをアクティビティが検出したときに呼び出されるためです。デフォルトの実装は単に現在のアクティビティを終了しますが、これをオーバーライドして、必要なことを行うことができます。

于 2013-05-10T05:27:07.377 に答える
0

3 つのアクティビティすべてを終了する場合はfinish()、新しいアクティビティを開始するときに使用して現在のアクティビティを閉じる必要があります。

于 2013-05-10T05:42:10.083 に答える