![](/img/trans.png)
[英]How to programmatically change the background image of an Android Activity
[英]How to change activity background image using switch?
我有兩個圖像(不是顏色)叫做black
和white
。 到目前為止,我已經編寫了這段代碼:
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.