簡體   English   中英

無法從切換按鈕到第二活動獲得價值

[英]Cant get value from switch button to the second activity

我為“黑暗模式”之類的東西制作了一個開關按鈕,基本上它應該更改應用程序的顏色,並且確實可以,但是僅在第一個活動中,然后,當我嘗試將布爾值傳遞給第二個活動時,它不會改變任何東西的顏色。

主要活動 :

        public void nightview(View view) {
    Intent intent4 = new Intent(this, DisplayResultActivit.class);
    Switch sw1 = findViewById(R.id.nightview);
    boolean switchstate = sw1.isChecked();
    intent4.putExtra("state", switchstate);
    if (switchstate) {
        //nightview
        View lay = findViewById(R.id.layout); 
        ...    

第二活動:

    boolean state = getIntent().getExtras().getBoolean("state");
        if (state) {
            //nightview
            View lay2 = findViewById(R.id.layout2);
            lay2.setBackgroundColor(Color.BLACK);
            TextView tv1 = findViewById(R.id.textView);
            tv1.setTextColor(Color.WHITE);
            tv.setTextColor(Color.WHITE);
        } else {
            //dayview
            View lay2 = findViewById(R.id.layout2);
            lay2.setBackgroundColor(Color.WHITE);
            TextView tv1 = findViewById(R.id.textView);
            tv1.setTextColor(Color.BLACK);
            tv.setTextColor(Color.BLACK);
        }

您可以像這樣創建一個類AppPreference:-

public class AppPrefrences {

    private static SharedPreferences mPrefs;
    private static SharedPreferences.Editor mPrefsEditor;

    public static boolean getSwitchValue(Context ctx) {
        mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
        return mPrefs.getBoolean("switch", false);
    }

    public static void setSwitchValue(Context ctx, Boolean value) {
        mPrefs = PreferenceManager.getDefaultSharedPreferences(ctx);
        mPrefsEditor = mPrefs.edit();
        mPrefsEditor.putBoolean("switch", value);
        mPrefsEditor.commit();
    }
}

並從以下所有活動中設置值:-優先設置開關值:-

setSwitchValue(MainActivity.this, true);

在所有活動中獲取切換值:-

getSwitchValue(MainActvity2.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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