2012-07-12 62 views
19

我想創建一個按鈕,可以讓用戶直接回到沒有android name =「com.example.example」的主要活動。
它有android.intent.etc ...
我怎樣才能引用我的按鈕回到這個活動?返回MainActivity的按鈕

+0

感謝編輯,(有英語不好) – Moussa 2012-07-12 21:26:10

+0

什麼是你正在試圖啓動活動的全名? – confucius 2012-07-12 21:28:25

+0

主要活動,她是<應用 機器人:圖標= 「@繪製/ ic_launcher」 機器人:標籤= 「@串/ APP_NAME」> <活動 機器人:標籤= 「@串/ APP_NAME」 機器人:名稱=「。Main」> Moussa 2012-07-12 21:29:32

回答

40

比方說您的主要活動被稱爲Main.java。

btnBack.setOnClickListener(new OnClickListener(){ 

    private void onClick(){ 
    Intent intent = new Intent(currentActivity.this, Main.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
    } 
}); 
+0

這會將一個新的Home活動實例添加到堆棧中,而不是將用戶帶回到Home活動。 – 2012-07-12 21:48:53

+0

您正在將新的實例添加到堆棧中! – 2012-07-12 21:54:44

+1

我添加了標誌,因此它不會將新實例添加到堆棧。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2012-07-13 17:13:59

0

無論你在哪裏調用startActivity()方法都需要按鈕中的onClick方法。而已。

+0

???即時通訊一小菜抱歉 – Moussa 2012-07-12 21:32:40

3
Intent intent = new Intent(this, Main.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 
+0

錯誤新Intent(this,Main.class); – Moussa 2012-07-12 21:33:03

+0

什麼是錯誤 – confucius 2012-07-12 21:34:19

+0

這是我的設置:公共無效的onClick(視圖v){ \t //上點擊執行操作 \t \t意向意圖=新意圖(這一點,Main.class); \t intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK \t | Intent.FLAG_ACTIVITY_CLEAR_TOP); \t startActivity(intent); \t \t這是錯誤:構造函數Intent(new View.OnClickListener(){},類

)未定義。 – Moussa 2012-07-12 21:41:03

14

使用startActivity(intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

+0

+1:這是正確的答案。添加像NEW_TASK這樣的標誌只會爲用戶創建意想不到的行爲,並且只需啓動新的活動就會向堆棧添加第二個(新)實例。 – Devunwired 2012-07-12 21:34:22

+0

不工作,你可以更詳細嗎? – Moussa 2012-07-12 21:44:46

+1

@Moussa Intent a = new Intent(this,Home.class); a.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(a); – 2012-07-12 21:50:43

9

有時候,你可以叫activity.finish()結束當前活動,因此主要(第一次創建)活動將彈出。

如果這不是你的情況下,這樣做:

Intent intent = new Intent(getApplicationContext(), Main.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)    
startActivity(intent); 
0
public void onBackPressed(){ 
    finish(); 
} 
+2

這並不意味着它會進入主體,這意味着它只會回到棧上的前一個活動。這是錯的 – 2017-06-06 19:03:03

+0

這不提供問題的答案。一旦你有足夠的[聲譽](https://stackoverflow.com/help/whats-reputation),你將可以[對任何帖子發表評論](https://stackoverflow.com/help/privileges/comment);相反,[提供不需要提問者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-c​​an- I-DO-代替)。 - [發表評論](/ review/low-quality-posts/16343576) – Zoe 2017-06-07 11:28:13

+0

@LunarWatcher我很尊敬地不同意 - 這是一個_attempt_回答...一個嘗試可能是錯誤的,並且發生在非常特殊的情況下 - 但是解決方案不好,不足以刪除。 – 2017-06-07 14:53:01