SharedPreference在自定义对话框中使用

时间:2012-11-25 12:23:59

标签: android android-listview sharedpreferences android-preferences preferenceactivity

我创建了扩展preferenceActivity的活动。在那个活动中,我打开了自定义对话框,显示了项目列表。每当我点击列表视图中的项目时,对话框就会关闭。那时我想在SharedPreference中存储所选项目,以便我在应用程序范围内获取该项目。

但我的问题是如何在SharedPreference中存储所选项?

当我下次打开我的应用程序时,我应该能够检索以前选择的项目。

以下是我的PreferenceActivity代码:

public class SettingsActivity extends PreferenceActivity implements OnSharedPreferenceChangeListener 
{
    SharedPreferences myprefs;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //setContentView(R.layout.settings);
        addPreferencesFromResource(R.xml.prefs);

        PreferenceManager.getDefaultSharedPreferences(this).registerOnSharedPreferenceChangeListener(this);

        Preference prefereces=findPreference("alertdialog_Font_Style");
        prefereces.setOnPreferenceClickListener(new OnPreferenceClickListener() {

            public boolean onPreferenceClick(Preference preference) {
                // TODO Auto-generated method stub
                DialogFontStyle objdialog = new DialogFontStyle(SettingsActivity.this,R.style.CustomDialogTheme);
                objdialog.show();
                return true;
            }


        });
    }

这是我的对话课程:

public class DialogFontStyle extends Dialog {

    public DialogFontStyle(Context context, int theme) {
        super(context, theme);
        // TODO Auto-generated constructor stub
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.dialog_layout);

        final String[] sizeType = new String[] {"a" , "b" , "c" , "d"};       

            final ListView lst = (ListView)findViewById(android.R.id.list);

            ArrayAdapter<String> adapter = new ArrayAdapter<String> (context,android.R.layout.simple_list_item_1,sizeType);                  
         lst.setAdapter(adapter);

             lst.setOnItemClickListener(new OnItemClickListener() {
                 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                        long arg3) {
                    // TODO Auto-generated method stub

                    dismiss();
                }
             });
    } 
}

请给我一些解决方案,以便在共享偏好中存储数据。 感谢名单。

2 个答案:

答案 0 :(得分:0)

您有几种选择:

  • 您可以扩展ListPreference类来自定义其外观或行为,而不是创建自定义对话框,而是依赖于settings screens使用的默认机制。然后由ListPreference超类管理保存。

  • 您可以通过获取调用Context.getSharedPreferences()方法的共享首选项来手动存储首选项,然后获取和Editor,这将允许您将值放入共享首选项并提交这些更改

要检索以前存储的项目,您只需要再次获取SharedPreferences对象并调用所需的get ..()方法来获取以前存储的密钥。

答案 1 :(得分:0)

要编写要共享首选项的内容,请使用以下代码:

SharedPreferences mPrefs = PreferenceManager.getDefaultSharedPreferences( mContext );
SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean( KEY, VALUE );
editor.commit();

mContext应该是您的活动或应用程序的上下文而不是对话框。或者,如果您的对话在您的活动中,请使用SettingsActivity.this或在onCreate()上创建类成员mContext和initi