[英]Java code does not work properly - why so?
我是 Java 和 Android Studio 的新手,我決定讓 Spinner 在設置中切換應用程序主題,但程序無法正常工作。
當您在 SharedPreferences 中 select “淺色主題”時,“深色主題”被保存,當您 select “深色主題” - “深灰色主題”,“深灰色主題” - “淺色主題”時。 我需要糾正這個誤解。 方法“ThemeUtils.changeToTheme(主題);” 未實現。
設置活動
public class SettingsActivity extends AppCompatActivity {
SharedPreferences colorPref;
public static final String COLOR_PREF = "l";
Spinner ThemeSpinner;
String Theme;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
colorPref = getSharedPreferences(COLOR_PREF, Context.MODE_PRIVATE);
ThemeSpinner = (Spinner) findViewById(R.id.SpinnerTheme);
final ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.Themes, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ThemeSpinner.setAdapter(adapter);
ThemeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
Theme = (String)adapterView.getItemAtPosition(position
colorPref = getPreferences(MODE_PRIVATE);
boolean hasVisited = colorPref.getBoolean("hasVisited", false);
String savedTheme = colorPref.getString(COLOR_PREF, "");
if (!hasVisited) {
SharedPreferences.Editor e = colorPref.edit();
String savedTheme_First = getString(R.string.Pink_White);
savedTheme = savedTheme_First; e.putString(COLOR_PREF, savedTheme);
e.putBoolean("hasVisited", true);
e.apply();
}
if(savedTheme != Theme){
SaveTheme();
ThemeUtils.changeToTheme(Theme);
Toast toast = Toast.makeText(getApplicationContext(), "Selecrted : " + savedTheme, Toast.LENGTH_SHORT);
toast.show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void SaveTheme(){
colorPref = getPreferences(MODE_PRIVATE);
SharedPreferences.Editor ed = colorPref.edit();
ed.putString(COLOR_PREF, Theme);
ed.apply();
}
數組.xml
<string-array name="Themes">
<item>@string/Pink_White_rus</item>
<item>@string/Pink_Dark_rus</item>
<item>@string/Pink_VeryDark_rus</item>
</string-array>
字符串.xml
<string name="Pink_White">Light Theme</string>
<string name="Pink_Dark">Dark Gray Theme</string>
<string name="Pink_VeryDark">Dark Theme</string>
可以通過存儲 OnItemSelectedListener 提供的 position 值來維護微調器位置,這可以存儲在 SharedPreferences 中,然后可以將其設置為 spinner.setSelection() 方法調用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.