2011-11-29 42 views
2

假設有A,B,C,d和E等活動。我創建的活動中E.主頁按鈕,如果我現在從活動轉會到B,然後到C和最後到D.如何完成對主頁按鈕的點擊所有活動

現在,當我點擊主頁按鈕,當我在d的活動,我想完成我所有的其他活動。

這樣當用戶再次啓動該應用程序也不會打開d活動。相反,它會從第一個活動即A開始。那麼如何做到這一點。請建議我。

問候 Anshuman

回答

9

在活動d,你只需要定義一個FLAG_ACTIVITY_CLAR_TOP標誌,同時限定意圖開始首頁動態A.

例如:

public void btnHomeClick(View v) { 
     Intent intent = new Intent(this, HomeActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
    } 
+1

好的答案!!!謝謝 –

+0

+1很高興這個答案對你有幫助!感謝名單 –

0

首先我們不能覆蓋android中的「home」按鈕(即硬件按鈕)。

+0

沒有寫清楚的問題: –

+0

「我在動鄂創建一個home鍵」我想,而不是使用另一個按鈕,如果我寫的onPause()活動d的代碼..那麼它的工作原理 – AndroidDev

+0

@Anshuman你是否在使用帶操作欄設計模式的儀表板?如果是,那麼你只需要把「家」按鈕放在頂部的酒吧。並在該主頁按鈕單擊事件中寫入上面的代碼 –

1

你可以在你的home鍵的使用onclick System.exit(0);

1

完成對爲homeButton發稿所有活動的最好方法如下所述:

如果您需要支持僅API級別16+(安卓4.1/JELLY_BEAN及以上) finishAffinity();完成當前的活動在其中被調用以及當前任務中緊鄰其下的具有相同關聯性的所有活動。

要調用finishAffinity();家用按下按鈕時,您可以聽下面的主頁按鈕按下事件:

鍵代碼常數:public static final int KEYCODE_HOME;這個鍵是由框架處理,並且永遠不會傳遞給應用程序。因此,您需要在您的活動中覆蓋以下方法。

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);   
} 

覆蓋上述方法後,現在您可以使用onKeyDown()方法輕鬆地在您的活動中監聽HOME鍵。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) {  

    if(keyCode == KeyEvent.KEYCODE_HOME) 
    { 
     //The Code Want to Perform. 
    } 
}); 

完成所有活動前API級別16(搭載Android 4.1之前/果凍豆),你必須追蹤所有活動中的籌碼,並通過將Home鍵按下呼叫finish();爲所有這些事件返回到以前的調用活動(並且不,無法在Activity堆棧中迭代,因此您必須使用startActivityForResult()和OnActivityResult())自己管理所有這些。

不要使用System.exit(0);因爲它,如果你有在堆棧上一個以上活動不殺你的應用程序。實際發生的情況是該進程被終止並立即重新啓動,並且在堆棧上的活動較少。當您的應用程序被強制關閉對話框殺死時,或者甚至當您嘗試從DDMS中終止進程時,也會發生這種情況。就我所知,這是一個完全沒有記錄的事實。

相關問題