2013-04-20 135 views
0

好吧,所以我知道這可能看起來很簡單,我的意思是我認爲它是。但基本上我想要restartActivity方法重新啓動活動。製作按鈕重新啓動活動

我做的第一件事就是創建按鈕,並在xml中有這樣的代碼行。 android:onClick="restartActivity"

然後我的類包含restartActivity方法,例如

public void restartActivity() 
{ 
    Intent intent= new Intent(this, MainActivity.class); 
    startActivity(intent); 
} 

當我嘗試這樣結束意外事件發生的是停止工作對話框。所以我的問題只是爲什麼這不起作用。我確定我在正確的佈局中重新啓動了按鈕,我檢查並確保所有需要的引用都已完成。 Android清單是完全正確的。直到我將這兩條線添加出來纔開始崩潰。我還應該提到我的目標api是8,並且其中一個答案是api 11或更高。由於日食「親切」讓我知道。

+0

請添加你的錯誤。 您是否在再次啓動之前關閉活動? – 2013-04-20 04:52:47

+0

您是否嘗試使用重新創建方法? – Daniel 2013-04-20 04:55:10

+0

下面的答案將有助於您的問題,但我認爲你應該確保這是你想要做的。如果您需要刷新「視圖」或更新數據,那麼有更好的方法。從本身內部完全重新啓動'活動'沒有太多的理由 – codeMagic 2013-04-20 05:27:59

回答

0

的點擊可能喜歡

public void restartActivity(View view) 
    { 
     // do your work Here 
     Intent intent= new Intent(currentActivity.this, MainActivity.class); 
     startActivity(intent); 
    } 
1

使用活動上下文。你在點擊按鈕時指的是這個。這指的是當前的情況下,你的情況是按鈕。

Intent intent= new Intent(ActivityName.this, MainActivity.class); 

這將創建相同活動的新實例。

假設您有MainActivity。這是上回

在按鈕點擊啓動相同的活動,並呼籲結束()

Intent t= new Intent(MainActivity.this,MainActivity.class); 
startActivity(t); 
finish(); 

編輯:

在您的第一項活動說按鈕點擊

Intent t= new Intent(FirstActivity.this,SecondActivity.class); 
startActivity(t); 
finish(); 

在您的第二個按鈕點擊活動

Intent t= new Intent(SecondActivity.this,FirstActivity.class); 
startActivity(t); 
finish(); 
+0

因此,等待所有這一切都在我的第二個活動onClick方法?我想我的第二項活動可以推出哪些代碼來重新啓動第一項活動?我想這會是一個更好的方式來做到這一點。 – 2013-04-21 02:45:48

+0

你可以在第二項活動中做同樣的事情。但是會創建一個新的活動實例。在這種情況下,您需要清除後退堆棧。 – Raghunandan 2013-04-21 05:09:10

2

活動類已經提供了這種方法:

public void recreate() 

自:API級別11 事業活動與新實例中重新創建。由於配置更改,這會導致與創建Activity時基本相同的流程 - 當前實例將經歷其生命週期到onDestroy(),然後創建一個新實例。

所以,你可以做這樣的事情,

public void Restart() 
{ 
    this.recreate(); 
} 

如果你是活動的以外,後來乾脆:

public void Restart(Context ctx) 
    { 
     Activity a = (Activity)ctx; 
     ctx.recreate(); 
    }