2012-06-10 97 views
2

我正在製作一個android應用程序,我希望活動能夠在其他活動上按下後退按鈕時重新加載自己。我有一系列的活動。所以我得到了主要的,還有很多其他的。假設主要是activity-1,其他的是activity-2,3,4,5,6,7。一旦用戶按下了一個按鈕,使他進入活動-2或3或4,他將再次出現一些按鈕,其中一個按鈕將使他活動-3或4或5.因此,當用戶處於從主活動啓動的一個活動中,並按下後退按鈕,主要活動應該重新加載,這怎麼可能?請提前幫助和感謝!在android中重新加載活動

+1

在調用'startActivity(...)'之後,立即除了'Activity-1'調用'finish()'之外,都有'Activities'。 – Squonk

+0

這聽起來像個壞主意......你爲什麼需要實現這種行爲?這違背了Android的公約和那種破壞了用戶體驗,在我看來... –

+0

我需要重新加載的主要活動,以重新從SharedPreferences的數據,因爲他們在其他活動 – user1446632

回答

0

覆蓋您的Activity的onBackPressed()方法(activity-2,3,4 ...)並編寫調用其中的Main活動的代碼。

例如:

@Override 
public void onBackPressed() { 

    Intent mainIntent = new Intent(context, YourMainActivity.class); 
    context.startActivity(mainIntent); 

    return; 
} 

當您從您的任何活動按後退按鈕這將刷新你的主要活動。

0
@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(null); 
} 

也許你應該試試這個在主要活動

+0

啓動應用程序時,給出了一個異常改變,logcat的說它不能暫停活動。 – user1446632

0

嘗試:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
       Intent intent = new Intent(this,name of the class where you want to go to); 

       startActivity(intent); 

       return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

這個代碼捕獲上後退按鈕點擊事件,帶你到你想要的活動。

+0

我知道,我以前使用過很多次的onKeyDown,而且我對它很熟悉。但是,如果我用意圖使用該代碼,我會一遍又一遍地啓動實體,不會讓我? – user1446632

+0

這是一個活動是如何重新加載,你也可以[開始從上次狀態的活動(http://stackoverflow.com/questions/4873263/android-save-activity-state-when-starting-new-activity) –

+0

@ user1446632您需要重新加載主要活動,那麼上述方法有什麼問題? –

0

使用finish();這將返回到案例activity-1中的上一個活動而不重新加載。

+0

只是頂部,但是這就是問題所在,我要重新加載的主要活動 – user1446632

+0

那麼它很簡單覆蓋的後退按鈕與使用「意圖」你如何從一個活動移動到另一個同一開頭。 – VenomVendor

2

開始Activity時,調用完成當前的Activity,例如。

Intent intent = new Intent(getActivity(), AudioRecordingActivity.class); 
    startActivity(intent); 
    getActivity().finish(); 

然後onbackPressed調用新的Activity對於eg :.

@Override 
public void onBackPressed() { 
    Intent intent = new Intent(getApplicationContext(), IndexPageActivity.class); 
    startActivity(intent); 
    super.onBackPressed(); 
}