2013-01-01 69 views
2

我已經在android中做了一個應用程序。它是一個應用程序相關的計時器。現在我已經嘗試了很多把控制在Android設備的後退按鈕,當它被按下的過程應該被殺死,並直接顯示主菜單..請幫助我...提前感謝你..! enter image description here如何通過點擊Android中的返回按鈕來終止進程?

+0

什麼叫主菜單是什麼意思?您的應用程序的主菜單或設備的主菜單? –

+0

哪個進程?主菜單是什麼意思? –

回答

2

試試這個代碼

@Override 
public void onBackPressed() { 
    yourActivity.this.finish; 
} 
+0

謝謝普里亞...... hav好日子 –

+0

@Priya-但是你能告訴我..如果我想要這件事發生在我的應用程序中的所有活動。我應該添加這個代碼到所有的活動? –

+0

@ jimmycool你可以添加到所有的acitivties,它會完成後退按鈕的活動。 –

2

覆蓋onBackPressed()在您的活動,並添加必要的代碼有

onBackPressed

活動時已檢測到用戶的背部 鍵按下時調用。默認實現只是完成當前活動, 但您可以重寫此操作以執行任何您想要的操作。

+0

謝謝你,先生..!>>> –

1

你可以像這樣點擊返回按鈕。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     finish();// call finish() on click of back button 
    } 
    return super.onKeyDown(keyCode, event); 
} 

例如:使用startActivity(新意圖(...))A活性至B活性移動; 不完成或殺死一個活動,它將堆棧So when you click on back button in B activity you can go back to A activity, which is already in stack.

當你想返回到主菜單時調用finish()當你移動到下一個活動的每個活動。

例如:當你使用startActivity(新意圖(...))一個活動到B活性移動;致電finish()殺死A活動。 So when you click on back button in B activity you can go back to Main Menu coz every activity ll be killed.

片段是在這裏:

startActivity(new intent(A.this, B.class)); 
finish(); // when you click back button on B activity, directly you can go to main menu 

更新時間: 其他方式使用下面的代碼上按返回鍵殺應用程序。 但不建議

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     android.os.Process.killProcess(android.os.Process.myPid());// Kill the app on click of back button. 
    } 
    return super.onKeyDown(keyCode, event); 
} 

希望這可以幫助你理解的概念。

+0

先生......感謝你......對於這個......但我想要的是從任何活動在項目中,當我按回按鈕它應該殺死進程,並直接進入主菜單...可以請你幫我這個嗎?謝謝先生.. –

+0

簡單..當你移動到下一個活動調用finish() ,所以它會從堆棧中刪除 –

+0

更新我的回答 –

0

以及吉米,你可以使用此代碼去主屏的裝置 -

finish(); 
    moveTaskToBack(true); 
    System.exit(0);  

光潔度()方法只關閉當前活動。

moveTasktoBack將隱藏你的應用程序,您還可以快速通過android.os.Process.killProcess(android.os.Process.myPid())如果你想殺死一個應用程序。

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

這甚至不完成當前活動 - 它只能隱藏它。 – andr

0

在清單中,你可以嘗試添加該

<activity 
    android:name=".MainActivity" 
    android:finishOnCloseSystemDialogs="true" 
</activity> 

我有一個類似的問題,這解決了這個問題對我來說。

1

只是清除行動歷史,使您的應用程序獲取startActivity();

<activity 
     android:name="com.example.abcd.Your_Acitivty" 
     android:noHistory="true"> 
    </activity> 

快樂編碼後closed.And叫finsh();

+0

我認爲這一個不工作。即使當我使用noHistory並調用finish()時,它也會繼續使用內存。 –

0

我解決了這個由覆蓋onBackPress()和的onStop()

@Override 
protected void onStop() { 
    super.onStop(); 
    System.exit(0); //kill the app 

} 

@Override 
public void onBackPressed() { //here I capture the event onBackPress 
    super.onBackPressed(); 
    onStop(); //call onStop 
}