[英]Keep the state of switch button after closing the app
我正在制作一個應用程序,其中有兩個切換按鈕,一個用於Twitter登錄,另一個用於Twitter登錄。
但是沒有任何幫助,這就是為什么發布新問題。
所以基本上是有一個切換按鈕來登錄和注銷。 工作正常。 如果我關閉該應用程序並再次返回該應用程序,那也可以正常工作,即會話保持不變,但狀態按鈕設置為false,即未激活。
我遵循了其他答案,並且如果實現了該答案,則會收到Caused by: java.lang.IllegalArgumentException: Callback must not be null.
原因Caused by: java.lang.IllegalArgumentException: Callback must not be null.
的錯誤Caused by: java.lang.IllegalArgumentException: Callback must not be null.
(用於Twitter登錄)。
我將發布一些代碼,以解釋這種情況。
tSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(isChecked){
SharedPreferences.Editor editor = getSharedPreferences("com.example.anubhaw.socialtwitter", MODE_PRIVATE).edit();
editor.putBoolean("service_status", tSwitch.isChecked());
editor.commit();
loginButton.performClick();
}else{
Twitter.getInstance();
Twitter.logOut();
twitter_layout.setVisibility(View.GONE);
Toast.makeText(getApplicationContext(), "Logged out from Twitter", Toast.LENGTH_SHORT).show();
}
}
});
SharedPreferences prefs = getSharedPreferences("com.example.anubhaw.socialtwitter", MODE_PRIVATE);
boolean tState = prefs.getBoolean("service_status", false);
if(tState){
//Do your work for service is selected on
Toast.makeText(getApplicationContext(), "Inside the sharedPref", Toast.LENGTH_SHORT).show();
tSwitch.setChecked(true);
} else {
//Code for service off
}
如果我刪除了sharedPref東西,那么除了該切換按鈕的狀態之外,其他所有東西都工作正常。
如果您需要更多信息,請告訴我。 謝謝
您可以使用以下代碼:
sharedPreferences = getSharedPreferences("com.example.anubhaw.socialtwitter", MODE_PRIVATE);
preferences = sharedPreferences.edit();
tSwitch.setChecked(sharedPreferences.getBoolean("isChecked",false));
tSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
preferences.putBoolean("isChecked",true);
}else {
preferences.putBoolean("isChecked",false);
}
preferences.commit();
}
});
Mahmoud編寫的代碼無效,需要進行一些更改。 這是一個工作版本。 它基本上將切換保存在SharedPreferences中。
private Switch mySwitch;
// Switch
mySwitch = (Switch) findViewById(R.id.mySwitch);
boolean value = true; // default value if no value was found
final SharedPreferences sharedPreferences = getSharedPreferences("isChecked", 0);
value = sharedPreferences.getBoolean("isChecked", value); // retrieve the value of your key
mySwitch.setChecked(value);
mySwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
sharedPreferences.edit().putBoolean("isChecked", true).apply();
}else {
sharedPreferences.edit().putBoolean("isChecked", false).apply();;
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.