我正在实现一个拨动开关,该开关应在特定的时间延迟后关闭。但是,当我关闭应用程序时,它会丢失拨动开关的当前状态。因此,我想为此使用共享首选项。但是,在下面的代码中,我的共享的首选项存储了开关的当前状态,但是在指定的时间延迟后并没有关闭开关。
我尝试实现共享首选项来存储切换开关的状态。但是,在关闭应用程序并再次打开它之后,它会记住当前状态,但在指定的时间延迟后不会关闭。
公共类MainActivity扩展了AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ToggleButton toggleButton = findViewById(R.id.tb1);
final Handler handler = new Handler();
SharedPreferences sharedPrefs = getSharedPreferences("com.example.vishal.togglebutton", MODE_PRIVATE);
toggleButton.setChecked(sharedPrefs.getBoolean("toggleButton", true));
toggleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(toggleButton.isChecked()) {
final SharedPreferences.Editor editor = getSharedPreferences("com.example.vishal.togglebutton", MODE_PRIVATE).edit();
editor.putBoolean("toggleButton", true);
editor.apply();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toggleButton.setChecked(false);
}
}, 10000);
}
else {
Toast.makeText(MainActivity.this, "Uncheck", Toast.LENGTH_SHORT).show();
}
}
});
}
}
答案 0 :(得分:0)
尝试这个概念,完成后取消线程。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ToggleButton toggleButton = findViewById(R.id.tb1);
Handler handler = new Handler();
SharedPreferences sharedPrefs = getSharedPreferences("com.example.vishal.togglebutton", MODE_PRIVATE);
toggleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(toggleButton.isChecked()) {
SharedPreferences.Editor editor = getSharedPreferences("com.example.vishal.togglebutton", MODE_PRIVATE).edit();
editor.putBoolean("toggleButton", false);
editor.apply();
}
else {
SharedPreferences.Editor editor = getSharedPreferences("com.example.vishal.togglebutton", MODE_PRIVATE).edit();
editor.putBoolean("toggleButton", true);
editor.apply();
}
}
});
handler.postDelayed(new Runnable() {
@Override
public void run() {
toggleButton.setChecked(sharedPrefs.getBoolean("toggleButton", false));
}
}, 10000);
}
}