2013-07-05 68 views
8

我實現我的應用程序一個按鈕,清除使用此代碼的所有sharedpreferences:刷新活動而不重新打開它?

context.getSharedPreferences("bifrostPrefs", 0).edit().clear().commit(); 

現在的問題是,每當我用的按鈕,然後我需要退出活動並重新打開它,看看結果。

Intent reOpen = new Intent (Bifrost.this, Bifrost.class); 
startActivity(reOpen); 

我的想法似乎聰明,直到我發現,如果我重新打開活動,然後我需要按後退按鈕兩次:我嘗試通過簡單地使與此代碼按鈕重新開啓活動,解決這回到主要活動。所以我做了一些啓發式算法,發現這個代碼:

finish(); 
startActivity(getIntent()); 

現在這工作正常,活動被刷新,然後我只需要點擊一次後退按鈕。但是,如果沒有「閃動」進出的活動,還有另外一種更新活動的方式嗎?正如你所知道的,每次你開啓一項新的活動,它會閃爍進來,所以應用程序滯後一秒。有沒有辦法通過繞過這個來刷新活動?

+0

沒有動畫的傳球意圖 – QuokMoon

回答

15

嗯,這將是更好的更新活動的內容,但如果它太複雜了,你可以用這個方法來覆蓋默認的動畫:

finish(); 
overridePendingTransition(0, 0); 
startActivity(getIntent()); 
overridePendingTransition(0, 0); 
+0

是的!這正是我正在尋找的,該應用程序按我現在的意圖工作,不需要進一步的複雜化。謝謝! – Guy

+0

也適用於我! – publicknowledge

+0

這也適用於我。解決方案簡單 –

0

您是否有一些意見可能會根據您的共享偏好中的值來更改其值/大小?如果是,則創建一個方法來初始化視圖並在onCreate()方法和onClick()方法上調用該方法。

1

您可以將標誌Intent.FLAG_ACTIVITY_NO_ANIMATIONlink)添加到您的reOpen意圖分解所有動畫。但正如其他答案所述,更好地刷新你裏面的數據Activity

+0

這很聰明! –