دوست عزیز اگه به کلید هایی که ادمین داده توجه کنی به راحتی میتونی این مشکل رو حل کنی
چون ما از دو متغیر 0-1 برای این کار میخواهیم استفاده کنیم بهتر از boolean استفاده کنیم
اول Boolean مون رو قبل از متد on creat تعریف میکنیم
بعد یه SharedPreferences برای بازسازی و لود با استفاده از بولن تعریف میکنیم با مقدار اولیه ی ترو
کد:
final SharedPreferences shp = getSharedPreferences("sett", MODE_PRIVATE);
swt = shp.getBoolean("chk", true);
از این طریق به سویچ میگیم طبق مقدار داده شده عمل کنه
کد:
aSwitch.setChecked(swt);
و برای ذخیره سازی مقداری که به سویچ داده ایم هم از این روش استفاده میکنیم که با زدن هر بار دکمه اونو ذخیره میکنه و میگیم اگه مقدارمون ترو شد توست فعال رو نشون بده و اگه فالس شد توست غیر فعال رو نشون بده
کد:
aSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// برای تشخیص ترو ، فالس و نمایش تتوست ( میتونید هم از این قسمت استفاده نکنید )
if (aSwitch.isChecked()) {
Toast.makeText(MainActivity.this,"فعال ",Toast.LENGTH_LONG ).show();
} else{
Toast.makeText(MainActivity.this,"غیر فعال ",Toast.LENGTH_LONG ).show();
}
// برای ذخیره سازی مقدار سویچ
SharedPreferences.Editor shpE = shp.edit();
shpE.putBoolean("chk", aSwitch.isChecked());
shpE.commit();
}
});
این کد رو برای سویچ نوشتم براتون
کد:
public class MainActivity extends ActionBarActivity {
boolean swt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Switch aSwitch = (Switch) findViewById(R.id.switch1);
final SharedPreferences shp = getSharedPreferences("sett", MODE_PRIVATE);
swt = shp.getBoolean("chk", true);
aSwitch.setChecked(swt);
aSwitch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (aSwitch.isChecked()) {
Toast.makeText(MainActivity.this,"فعال ",Toast.LENGTH_LONG ).show();
} else{
Toast.makeText(MainActivity.this,"غیر فعال ",Toast.LENGTH_LONG ).show();
}
SharedPreferences.Editor shpE = shp.edit();
shpE.putBoolean("chk", aSwitch.isChecked());
shpE.commit();
}
});
}
}