我一直在努力在3dot(溢出)菜单中实现“清除首选项”选项...此处的示例屏幕截图:
明智的编码......我试过这个,但它没有做到这一点:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.clearsp) {
SharedPreferences preferences = getSharedPreferences("dyna_cb_prf", 0);
preferences.edit().clear().commit();
Intent i = new Intent(Intent.ACTION_VIEW);
startActivity(i);
}
return super.onOptionsItemSelected(item);
如何修改此提示?基本上,我希望它在单击该选项时清除所有共享首选项(我可能有多个xml文件有时会清除)
答案 0 :(得分:1)
一种解决方案是创建一个SharedPreferencesManager类,它跟踪所有不同的SharedPreference xml文件,并有一个清除它们的方法。
两种类型的SharedPreferences的简单示例:
Model->detach([12,32,43],false)
Model->sync([12,32,43],false)
然后,如果用户选择菜单项以清除首选项,则只需调用public class SharedPreferencesManager {
public static SharedPreferences forDynaCpPrf(Context ctx) {
return ctx.getApplicationContext().getSharedPreferences("dyna_cb_prf", 0);
}
public static SharedPreferences forSomethingElse(Context ctx) {
return ctx.getApplicationContext().getSharedPreferences("something_else", 0);
}
public static void clearAllSharedPreferences(Context ctx) {
forDynaCpPrf(ctx).edit().clear().commit();
forSomethingElse(ctx).edit().clear().commit();
}
}
方法:
clearAllSharedPreferences()
请注意,您只需调用if (id == R.id.clearsp) {
SharedPreferencesManager.clearAllSharedPreferences(this);
}
方法,而不是在SharedPreferencesManager类之外调用getSharedPreferences("dyna_cb_prf", 0)
:
forDynaCpPrf()