android - PreferenceActivity 显示/编辑域对象的值

标签 android android-activity sharedpreferences preference

根据这段代码,我如何从复选框和文本首选项中获取值并将它们存储在域对象中?

public class MonitorPreferences extends PreferenceActivity {
    private PersistenceManager pm;
    private Monitor monitor;
    private boolean mActive;
    private String mName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        pm = new PersistenceManager(getApplicationContext());
        addPreferencesFromResource(R.xml.monitors_pref);

        fetchDomainObject();
    }

    private void fetchDomainObject() {  
        monitor =  pm.fetchMonitor(getIntent().getLongExtra(SuperListActivity.EXTRA_KEY_MONITOR_ID, -1));
    }

    private void persistDomainObject(Monitor monitor) {
        pm.persist(monitor);
    }
}

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="General">
        <CheckBoxPreference
            android:key="active_chkbox"
            android:title="Active"
            android:defaultValue="true"
            android:persistent="false"/>
        <EditTextPreference
            android:key="name_txt"
            android:dependency="active_chkbox"
            android:title="Name"
            android:summary="Enter a name"
            android:dialogTitle="Enter a name"
            android:dialogMessage="Enter a name"
            android:defaultValue="John Doe"
            android:persistent="false"/>
    </PreferenceCategory>
</PreferenceScreen>

原始问题:创建具有 PreferenceActivity 外观和感觉的普通 Activity 我的目标是从一个 Activity 编辑域对象的变量,具有普通 android 首选项的外观和感觉。完成此任务的最简单方法是什么?

是否可以创建一个 PreferenceActivity 并以某种方式修改它以显示/编辑域对象的值而不是 SharedPreferences 中的值?

最佳答案

当然。只需添加代码以将值存储到数据库中,并且不要忘记在首选项 xml 中提及 android:persistent=false 属性。

final CheckBoxPreference soundcb = (CheckBoxPreference) findPreference("active_chkbox");

此外,您可以使用 soundcb 对象做很多事情:读取值、设置 onClickListeners 等等。

关于android - PreferenceActivity 显示/编辑域对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4884403/

相关文章:

预览自定义 View 中的 Android ResourceNotFoundException

android - 在 Android 的非 Activity 类中使​​用 startActivityForResult()

Android:在 Activity 之间传递 HashMap

java - 如何使用 boolean 、 true 和 false 的共享首选项

Flutter:无法使用 workmanager 初始化共享首选项

javascript - 在 Android 中使用 Jquery Mobile 和 Phonegap 来触摸移动和滚动内容

android - onResume() 是在 Intent 完成后调用吗?

android - 如何从调用的电话代码(例如#120)开始一个 Activity

java - 共享首选项不起作用,默认值

android - 如何找出应用程序的安装位置?