中工作如果我更改活動示例中的任何內容或顏色的示例,我有一個疑問,我有一個帶有來自共享首選項的數據「apple」的textview。我點擊一個按鈕開始新的activity2那裏我點擊一個按鈕來更新共享首選項「apple」到「gova」我點擊activity2中的textview後退按鈕應該更新。有沒有辦法更新沒有onResume()方法或解釋如何onResume()工作...?onResume()在android
回答
您應該理想地使用onBackPressed而不是onResume。下面是類似的路線的代碼片段應該幫助
@Override
public void onBackPressed() {
new AlertDialog.Builder(this)
.setTitle("Really go back?")
.setMessage("Are you sure you want to?")
.setNegativeButton(android.R.string.no, null)
.setPositiveButton(android.R.string.yes, new OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Activity1.super.onBackPressed();
//change sharedPreferences here
}
}).create().show();
}
希望這有助於
此答案不正確,如果用戶未更新該值,該怎麼辦?我不明白在這種情況下使用'onBackPressed()'。 –
這個調用中總是可以包含IF語句,以檢查sharedPreferences值是否等於當前選擇。 – BountyHunter
這個函數會進入第二個活動不是嗎?如何在此代碼的第一個活動中將「apple」更新爲「gova」? –
onResume()被稱爲你的活動是顯示給用戶的每一次。因此,如果用戶轉到其他活動並返回到第一個活動,則會調用onResume()。你的代碼應該是這樣的:
@Override
protected void onResume() {
super.onResume();
myTextView.setText(preferences.getString("myKey", "defaultValue");
}
如果因任何原因,你不希望使用的onResume(),你可以註冊一個OnSharedPreferenceChangeListener,它都會被調用的共享PREF值被改變的時間。
您的第一項活動將包括代碼看起來像這樣:
public class MainActivity extends AppCompatActivity {
SharedPreferences preferences;
SharedPreferences.OnSharedPreferenceChangeListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (key.equals("myKey")) {
// update your textview
}
}
};
preferences.registerOnSharedPreferenceChangeListener(listener);
}
@Override
protected void onDestroy() {
super.onDestroy();
preferences.unregisterOnSharedPreferenceChangeListener(listener);
}
}
雖然每次共享前置碼的值被改變時都會調用OnSharedPreferenceChangeListener,但是如何使用它更新Activity 1的TextView上的文本? –
@AndrewT。有什麼問題? 'OnSharedPreferenceChangeListener'在第一個活動中被聲明和註冊。從第一個活動的角度來看,我們不關心其他活動中發生了什麼,我們只知道如果共享的pref值發生更改,我們會相應地更新「TextView」。 –
沒問題,因爲我覺得這有點不尋常,而且我只是從你的答案中知道這個方法。我沒有測試過這個代碼,但是它會起作用,因爲'Activity1'不在前臺? –
只是覆蓋onBackPressed
方法在第二個活動,並在它的值設置爲共享偏好:
@Override
public void onBackPressed() {
// Set shared preference value
}
請仔細閱讀這個問題。更改共享首選項值**不會自動更新「TextView」的文本。 –
@AndrewT。 TextView已經設置了共享首選項。 – SANAT
- 1. android onresume?
- 2. Android - onPause和onResume
- 3. Android onResume onDetachedFromWindow
- 4. Android onResume崩潰
- 5. android sqlite onresume()oncreate()
- 6. Android onCreate onResume
- 7. Android onResume不叫
- 8. Android在OnResume中顯示ProgressDialog()
- 9. onResume for android註釋
- 10. 調用onResume在onResume問題
- 11. 的Android - GridView的的onResume
- 12. Android上的Dropbox,onResume()失敗
- 13. Android onResume空白屏幕
- 14. Android onResume ListView爲空之後
- 15. Android片段onResume與onCreateView
- 16. Android查看onResume方法?
- 17. Android onResume from應用程序
- 18. Android - 如何測試onResume()?
- 19. Android Activity onResume()和onActivityResult()衝突
- 20. Android onPause和onResume方法
- 21. Android ListView with SimpleCursorAdapter - 崩潰onResume
- 22. Android onResume佈局問題
- 23. android:從onResume調用類
- 24. 繪畫中的Android-onResume()
- 25. Android的ListView不更新onResume
- 26. Android NFC活動onResume onNewIntent
- 27. android定時器異常onResume
- 28. Android onCreate和onResume活動
- 29. onPause,Android中的onResume事件
- 30. Android服務在onResume中的mBoundService null
使用'startActivityForResult() '並更新'onActivityResult'中的值。請參閱http://stackoverflow.com/a/10407371/1979347 –
請閱讀[有關Android活動生命週期的官方文檔](http://developer.android.com/training/basics/activity-lifecycle/pausing.html) ,除非你想用'startActivityForResult()'使自己複雜化(如果使用正確,這很好),請使用'onResume()'來代替。 –
嗨同樣的另一個問題,我有一個綠色的TextView。點擊一個按鈕後,我將textview顏色更改爲紅色。我最小化該應用程序,並再次從最近從移動的textview顏色顯示爲綠色打開。怎麼樣....? – android