【问题标题】:Handling preference.xml file in android在android中处理preference.xml文件
【发布时间】:2013-12-09 10:36:07
【问题描述】:

我为我的应用设置创建了一个复选框首选项。

所以每当我选中或取消选中该框时,android 都会自动创建 myapp_preferences.xml 文件。这是android的默认工作。

这是我的问题:

我还维护一个单独的 xml 文件来维护此复选框的状态。所以我认为不需要由android创建的myapp_preferences.xml文件。 有什么方法可以避免创建 myapp_preferences.xml 文件。

这是我的代码:

final CheckBoxPreference CheckBoxPreference = (CheckBoxPreference) getPreferenceManager().findPreference(rsrc.getString(R.string.settings_checked));
            CheckBoxPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() 
            {            
                public boolean onPreferenceChange(Preference preference, Object newPreference)
                {
                    final SharedPreferences prefs = getSharedPreferences(Custom_Preference, 0);
                    final Editor edit = prefs.edit();
                    Boolean newBoolPreference = (Boolean) newPreference;
                    edit.putBoolean(rsrc.getString(R.string.settings_checked), newBoolPreference);
                    edit.commit();
                    return true;
                }
            }); 

每当我选中或取消选中此框时,android 都会自动创建自己的首选项 xml 文件。我不想要这个动作。

【问题讨论】:

  • 为什么你要维护这个复选框的状态,而android已经这样做了?你应该摆脱你的文件而不是 myapp_preferences.xml
  • 必须为其他目的创建我的自定义首选项 xml 文件。抱歉,我无法避免。
  • 发布一些代码。如何生成 XML 文件
  • 已添加代码。 @MadhurAhuja
  • 如果您使用标准 API SharedPreferences(始终由 xml 文件支持),则无法避免创建文件。只需使用您自己的 api 写入您自己的 xml 首选项文件。

标签: android sharedpreferences


【解决方案1】:

在您的 PreferenceActivity 中,添加以下代码:

@Override
        protected void onCreate(Bundle savedInstanceState)
        {
                super.onCreate(savedInstanceState);

                PreferenceManager prefMgr = getPreferenceManager();
                prefMgr.setSharedPreferencesName("your custom filename");
                prefMgr.setSharedPreferencesMode(Context.MODE_PRIVATE);


                addPreferencesFromResource(R.xml.preference);

                this.appPreferences.sharedPreferences.registerOnSharedPreferenceChangeListener(listener);

        }

【讨论】:

  • 对不起,这不是我需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 2011-09-18
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
相关资源
最近更新 更多