簡體   English   中英

重新啟動應用程序時重新啟動Android活動

[英]Restart Android activity on relaunch of application

我在一個Android應用程序中進行了3個活動。 當我在每個活動中按返回按鈕時,應用程序將退出。 使用以下代碼。

當我從第三個活動中按回去時,應用程序退出正常,但是當我通過單擊應用程序圖標重新啟動該應用程序時,第三個活動將再次啟動。 但是在這種“重新啟動”時,我需要啟動我的主要活動。

我嘗試在“ onResume”上編寫代碼,但無法正常工作。

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

請幫我。 提前致謝

您可以使用以下方式解決此問題:在您的第三個Activity類中,輸入以下代碼,

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

同樣的方法,您可以參加第二個活動課程

    @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();
}
  1. 創建三個活動-A,B和C
  2. 在活動A中-調用startActivity(B)時,也調用finish()。 范例-

      public void onButtonClick() // Some method { startActivity(intentForB); finish(); } 
  3. 同樣,從B轉到C時-

      public void onButtonClick() { startActivity(intentForC); finish(); } 
  4. 當用戶使用Activity C並按下后退按鈕時,應用程序將關閉(無需顯式編寫后退按鈕處理)。

希望這可以幫助。

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();

如果在前兩個活動中使用了此功能,則在第三個活動中無需處理OnBackpressed() 因為當活動檢測到用戶按下返回鍵時將調用OnBackpressed() 默認實現只是完成當前活動,但是您可以覆蓋此活動以執行所需的任何操作。

在第一次啟動活動中,請在您的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;
    }

如果要退出所有3個Activity,則必須在啟動新Activity時使用finish()關閉當前Activity。

在首次啟動活動中,請在您的AndroidManifest.xml和android:launchMode =“ singleTop”中使用此代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM