簡體   English   中英

Java 代碼無法正常工作 - 為什么會這樣?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM