0

我创建了扩展preferenceActivity 的活动。在该活动中,我打开了显示项目列表的自定义对话框。每当我单击 listview 中的项目时,对话框都会关闭。那时我想将所选项目存储在 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();
                }
             });
    } 
}

请给我一些解决方案以将数据存储在 sharedpreference 中。谢谢。

4

2 回答 2

0

你有几个选择:

  • 您可以扩展ListPreference类来自定义其外观或行为,而不是制作自定义对话框,但依赖于用于设置屏幕的默认机制。然后,保存将由 ListPreference 超类管理。

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

取回之前存储的item,只需要再次获取SharedPreferences对象,调用想要的get..()方法获取之前存储的key即可。

于 2012-11-25T12:37:58.973 回答
0

要编写一些东西来分享偏好,请使用以下代码:

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

mContext should be context of your activity or application not dialog. Or if your dialog is within your activity use SettingsActivity.this or create class member mContext and initi in on onCreate()

于 2012-11-25T12:38:27.073 回答