如何在Android中使用单选按钮实现SharedPreferences

时间:2011-10-04 04:58:47

标签: android

我是Android的新手,所以请耐心等待。

我正在尝试设置一个新应用,它需要看起来像这样:

enter image description here

每个类别都有许多选项。每个选项都有两个字符串来表示选项的名称及其配置信息。用户通过点击单选按钮选择一个选项。应该有两个广播组:每个类别一个。图像没有显示,但屏幕底部应该有“保存”和“取消”按钮。

对于布局,我调用了getAll来显示键和值(它们只是TextViews)。这就是我失去的地方。

  1. 我不知道如何将Preference与RadioButton相关联。
  2. 我不知道如何保存更改(因为我不知道如何将首选项链接到RadioButton)。
  3. 我还想实现类似脏点的东西,以表示在保存之前是否真的有变化,但我不知道Android的最佳做法是什么。
  4. 如你所见,我完全迷失了。所以,任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

我可以指导的是,在checkedchanged事件中,您可以在共享的pref中获取或放置值。 e.g

                 if(radio1 is checked)
                {
                sharedPref.putString(...);  //puts values in pref
                sharedPref.commit();}

答案 1 :(得分:0)

我假设您使用自己的布局创建自己的Activity。在这种情况下,您将无法访问PreferenceActivity提供的自动首选项加载和保存机制。

您必须手动取消所有内容:在onCreate()中,您应该为取消和保存按钮添加一个事件监听器:

Button saveButton = (Button)findViewById(R.id.saveButton);
saveButton.setOnClickListener(new View.OnClickListener() {
   public void onClick(View v) {
      save();
   }
});

在save()方法中,您必须从单选按钮请求选择状态,并将您的选择存储在共享首选项中:

private void save() {
   String prefValue = (RadioButton)findViewById(R.id.firstButton).isChecked()?"First string":"Second string";
   SharedPreferences pref = PreferencesManager.getDefaultSharedPreference(this);
   pref.edit().putString("PrefName", prefValue).commit();
}

对于“脏位”,有两种解决方案:向单选按钮添加单击侦听器,如果单击其中任何一个,则说脏。或者您可以添加这些侦听器,并请求当前选择,并确定它是否与初始状态不同。

另一种方法是创建一个PreferencesActivity,使用preferences.xml,您可以在其中指定要为所选项存储的键和值。