我在 Android Studio 中遇到代碼問題。我有ActivityA和ActivityB。我有ActivityA按鈕。ActivityB是關于設置的。例如,我可以選擇應用程序的主題。全部使用完成SharedPreferences。如果我使用以下代碼將主題更改為 DARK:Button Settings = (Button) findViewById(R.id.settings);
Settings.setTextColor(Color.BLACK);
Settings.setBackgroundResource(R.drawable.shapestylethis3);然后我按返回鍵繼續ActivityA,然后按鈕就改變了。現在,當我進入ActivityB并且我想改回主題LIGHT時,我想恢復此默認按鈕ActivityA:style="@android:style/Widget.Button.Small"但我不知道如何實現這一目標。ActivityB單擊“保存”按鈕后立即發生變化,因為除了保存到SharedPreferences我recreate();還在onClick.但是當我放入recreate()inonResume時ActivityA,它就像一個無限循環。我將非常感謝您幫助我找到解決方案。先感謝您。
1 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
您可以輕松地避免使用變量或變量(您可能更喜歡這兩個中的任何一個)recrate()進入無限循環。ActivityApublic staticSharedPreference
讓我們有一個如下所示public static的變量。ActivityA
public static boolean shouldRecreate = false;
現在,當您更改樣式時ActivityB,請設置ActivityA.shouldRecreate = true且不要調用recreate().
現在,在onResume您的函數中ActivityA檢查 的值shouldRecreate并相應地調用該recreate()函數。
@Override
protected void onResume() {
super.onResume();
if (shouldRecreate) {
recreate();
shouldRecreate = false;
}
}
希望有幫助!
添加回答
舉報
0/150
提交
取消