با سلام
من از سرویس Push Notification سایت
Parse استفاده میکنم.چگونه میتوان درون برنامه یک switch ساخت تا به انتخاب کاربر، Push Notification خاموش یا روشن شود و این تنظیم ذخیره شود تا درصورت خارج شدن از برنامه تنظیمات حذف نشوند.
سلام.
شما با استفاده از SharedPreferences ، یک متغیر را ذخیره کنید که مقدار اولیه آن برابر 1 خواهد بود (برای حالت پیش فرض که همان نمایش دادن می باشد). سپس هر زمان که کاربر در برنامه اندروید شما، تنظیمات را تغییر داد، مقدار آن را به 0 تغییر می دهید (یعنی حالت عدم نمایش). متغیرهایی هم که با SharedPreferences ذخیره می شوند، تا زمان uninstall برنامه اندروید، حذف نخواهند شد.
سپس در بخشی از کدهای برنامه خود که برای Push Notification کد نوشته اید، شرط بگذارید که تنها در صورتی اجرا شوند که مقدار آن متغیر برابر 1 باشد (تنها در این صورت نمایش داده شوند).
برای ذخیره اطلاعات (تنظیمات) با استفاده از SharedPreferences ، دو کلید زیر را بخوانید :
http://www.kelidestan.com/keys/keys.php?key=288
http://www.kelidestan.com/keys/keys.php?key=248
من ازکد زیر برای ساخت یک Switch استفاده کردم:
کد:
private Switch mySwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySwitch = (Switch) findViewById(R.id.switch1);
//set the switch to ON
mySwitch.setChecked(true);
//attach a listener to check for changes in state
mySwitch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if(isChecked){
Toast.makeText(getApplicationContext(), "on", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(getApplicationContext(), "off", Toast.LENGTH_SHORT).show();
}
}
});
}
اما در ذخیره وضعیت Switch مشکل دارم؛ چگونه میتوان متغیر (0و1) را به کار برد؟
دوست عزیز اگه به کلید هایی که ادمین داده توجه کنی به راحتی میتونی این مشکل رو حل کنی
چون ما از دو متغیر 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();
}
});
}
}