2013-03-08 121 views
5

我有一個活動,直到用戶單擊按鈕時才響起。 單擊該按鈕時,會顯示一條消息。在顯示消息之後,而不是用戶按下後退按鈕退出,我希望我的活動自行退出到主屏幕。活動結束後回到主屏幕

finish()方法做到這一點嗎?如果是,我應該如何以及在哪裏實施它?

任何形式的幫助將不勝感激。謝謝

回答

7
Intent i= new Intent("package.homescreenactivity");//homescreen of your app. 
    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY); 
    startActivity(i); 
    finish(); 

通過清除活動堆棧回到主屏幕。

爲了理解整個概念,我建議你看看這個網站。 http://developer.android.com/guide/components/tasks-and-back-stack.html。 該網站介紹活動備份堆棧如何工作。

更新:(2014年8月15日)

清除堆棧中可能不是一個好主意。請看有效導航設計指南。

後退按鈕應該帶你回到上一個活動。

檢查

http://developer.android.com/design/patterns/navigation.html

+1

對不起,如果我不清楚。我的意思是Android手機的默認主屏幕。這是否回到它? – newbee 2013-03-08 06:32:33

+0

檢查編輯過的帖子。 – Raghunandan 2013-03-08 06:36:59

+0

明白了!謝謝:) – newbee 2013-03-08 06:44:16

1

應用完成()方法中的所有活動。活動結束後,它將返回主屏幕。

1

案例1:對於按鈕單擊

public void onClick(View v) { 
    // Show message here 
    moveTaskToBack(true); 
    } 

案例2:如果您想請用戶去家裏

public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 

      AlertDialog.Builder alertbox = new AlertDialog.Builder(this); 
      alertbox.setTitle(res.getString("Title")); 
      alertbox.setMessage(res.getString("Exit")); 
      alertbox.setIcon(R.drawable.logo); 
      alertbox.setPositiveButton(res.getString(R.string.Yes), 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface arg0, int arg1) { 
          exit(); 
         } 
        }); 

      alertbox.setNeutralButton(res.getString(R.string.No), 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface arg0, int arg1) { 
         } 
        }); 

      alertbox.show(); 
      return true; 
     } 

     return super.onKeyDown(keyCode, event); 
    } 

    private void exit() { 
     moveTaskToBack(true); 

    } 
1

假設你表示作爲一個alertdialog的消息,請致電finish()上按下按鈕的alertdialog

如果您正在使用Toast()請撥finish() on按鈕後按Toast()顯示。

0

你可以在按鈕onClick()適用finish()方法和後startActivity()呼叫時,可以申請完成方法,如下圖所示。

startActivity(intent obj); 
finish();