从菜单中清除所有共享首选项

时间:2016-02-03 20:07:10

标签: android android-layout android-fragments android-intent

我一直在努力在3dot(溢出)菜单中实现“清除首选项”选项...此处的示例屏幕截图:

enter image description here

明智的编码......我试过这个,但它没有做到这一点:

@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文件有时会清除)

1 个答案:

答案 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()