簡體   English   中英

如何使用開關更改活動背景圖像?

[英]How to change activity background image using switch?

我有兩個圖像(不是顏色)叫做blackwhite 到目前為止,我已經編寫了這段代碼:

public class MainActivity extends AppCompatActivity
{
    View parentView;
    SwitchCompat switchCompat;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        switchCompat = findViewById(R.id.switchCompat);
        parentView = findViewById(R.id.parentView);

        SharedPreferences prefs = getSharedPreferences("save", MODE_PRIVATE);
        switchCompat.setChecked(prefs.getBoolean("value", false);
        
        switchCompat.setOnClickListener(view -> {
            if(switchCompat.isChecked()) {
               parentView.setImageResource(R.drawable.black);
               SharedPreferences.Editor ed = getSharedPreferences("save", MODE_PRIVATE);
               ed.putBoolean("value", true);
               ed.apply();
               switchCompat.setChecked(true);
            } else {
               parentView.setImageResource(R.drawable.white);
               SharedPreferences.Editor ed = getSharedPreferences("save", MODE_PRIVATE);
               ed.putBoolean("value", false);
               ed.apply();
               switchCompat.setChecked(false);
            }
        });
    }

默認背景為白色。 如您所見,如果用戶檢查背景上的開關應該是黑色的,但這不起作用。 你知道有什么解決辦法嗎?

如果SwitchCompat已更改,則無需設置它,這是多余的。 SharedPreferences.Editor也初始化錯誤。 嘗試這個

public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener {

    View parentView;
    SwitchCompat switchCompat;
    SharedPreferences prefs;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        switchCompat = findViewById(R.id.switchCompat);
        parentView = findViewById(R.id.parentView);

        prefs = getSharedPreferences("save", MODE_PRIVATE);
        switchCompat.setChecked(prefs.getBoolean("value", false));

        switchCompat.setOnCheckedChangeListener(this);
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(buttonView.getId() == R.id.switchCompat) {
                if(isChecked) {
                  parentView.setImageResource(R.drawable.black);
                  SharedPreferences.Editor ed = prefs.edit();
                  ed.putBoolean("value", true);
                  ed.apply();
                } else {
                  parentView.setImageResource(R.drawable.white);
                  SharedPreferences.Editor ed = prefs.edit();
                  ed.putBoolean("value", false);
                  ed.apply();
                }
        }
    }
}

暫無
暫無

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

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