2013-05-10 200 views
0

我在android應用程序中有3個活動。當我按下每個活動中的按鈕時,該應用程序將退出。使用下面的代碼。在重新啓動應用程序時重新啓動Android活動

當我從第三項活動中按回時,應用程序退出正常,但是當我通過單擊應用程序圖標重新啓動應用程序時,第三項活動將再次啓動。但是我需要在這種「重新啓動」時發起我的主要活動。

我試過在「onResume」上寫代碼但不工作。

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

請幫幫我。在此先感謝

+0

在後退按鈕方法中加上this.finish()行。 – Riser 2013-05-10 05:32:43

+0

這意味着一旦用戶轉到下一個屏幕,上一個屏幕不可用於他? – Anukool 2013-05-10 05:36:32

+0

@SagarMaiyad BACK按鈕的默認行爲是調用當前活動的'finish()'。你不需要重寫該方法並自己做。 – 2013-05-10 12:23:59

回答

1
  1. 創建三個活動 - A,B和C
  2. 在活動A - 調用startActivity(B)時,呼叫結束()也。示例 -

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

    public void onButtonClick() 
    { 
        startActivity(intentForC); 
        finish(); 
    } 
    
  4. 當用戶在活動℃,當他按下後退按鈕,應用程序會關閉掉(不需以顯式地回寫按鈕處理)。

希望這會有所幫助。

+0

哇!謝謝你救了我的一天!!!!! – ramesh 2013-05-10 05:59:23

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

如果你在你的第一個兩項活動,然後在第三項活動中無需處理OnBackpressed()。因爲OnBackpressed()在活動檢測到用戶按下後退鍵時被調用。默認實現只是完成當前活動,但您可以覆蓋它以執行任何您想要的操作。

+0

感謝您的評論...現在,當我按下回車鍵時,它將轉到第二個視圖,而不是退出 – ramesh 2013-05-10 05:36:07

+0

,您可以在每個活動中使用OnBackpressed()來處理此問題。因爲默認實現只是完成當前活動 – 2013-05-10 05:37:18

+0

當您移動到另一個活動時,在所有活動中使用finish() – 2013-05-10 05:38:13

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; 
    } 
0

如果你想退出在所有3個活動,則必須同時啓動關閉使用finish()當前活動一個新的活動。

0

在您的AndroidManifest.xml和android:launchMode =「singleTop」中首次啓動活動時使用此代碼。

2

您可以通過以下方式 在你的第三個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(); 
}