PreferencesActivity - Android
这篇文章记录的是Android应用中的PreferenceActivity
基本使用
1.布局文件res/xml下.根节点为PreferencesScreen. 该节点下有下面的
2.根节点类继承自PreferenceActivity
3.使用addPreferenceFromResource将xml布局资源与activity关联起来.
4.读取数据
PreferenceManager preferenceManager = getPreferenceManager();
CheckBoxPreference checkbox = (CheckBoxPreference) preferenceManager.findPreference("checkbox");
Log.e(TAG, "checkbox 当前的状态是 " + checkbox.isChecked());
CheckBoxPreference
xml布局:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="checkbox"
android:summary="测试checkbox"
android:title="是否开启" />
</PreferenceScreen>
activity:
package com.example.myapplication.prefences;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import androidx.annotation.Nullable;
import com.example.myapplication.R;
public class MyPreferenceActivity extends PreferenceActivity {
private static final String TAG = "ysd";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_activity);
PreferenceManager preferenceManager = getPreferenceManager();
CheckBoxPreference checkbox = (CheckBoxPreference) preferenceManager.findPreference("checkbox");
// 获取选中状态
Log.e(TAG, "checkbox 当前的状态是 " + checkbox.isChecked());
}
}
执行结果:
ListPreference
首先,需要在res/values 目录下,建立一个数据列表.列表的内容如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="list_key">
<item>蒙恬</item>
<item>蒙毅</item>
<item>苻坚</item>
</string-array>
<string-array name="list_value">
<item>1号</item>
<item>2号</item>
<item>3号</item>
</string-array>
</resources>
布局xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="list"
android:summary="选择人"
android:title="大秦武将"
android:entries="@array/list_key"
android:entryValues="@array/list_value"
/>
</PreferenceScreen>
在JAVA中获取数据
package com.example.myapplication.prefences;
import android.os.Bundle;
import android.preference.ListPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import androidx.annotation.Nullable;
import com.example.myapplication.R;
public class MyPreferenceActivity extends PreferenceActivity {
private static final String TAG = "ysd";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_activity);
PreferenceManager preferenceManager = getPreferenceManager();
ListPreference list = (ListPreference) preferenceManager.findPreference("list");
// 获取键值对
Log.e(TAG, "list 当前的状态是 " + list.getEntry() + " --> " + list.getValue());
}
}
上面的代码执行之后,会得到诸如下面的执行结果:
EditTextPreference
布局XML:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:key="edit"
android:title="这是标题"
android:summary="这是阐述"
android:dialogTitle="弹出标题"
android:dialogMessage="弹出消息"
/>
</PreferenceScreen>
在JAVA中获取输入文本:
package com.example.myapplication.prefences;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.util.Log;
import androidx.annotation.Nullable;
import com.example.myapplication.R;
public class MyPreferenceActivity extends PreferenceActivity {
private static final String TAG = "ysd";
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences_activity);
PreferenceManager preferenceManager = getPreferenceManager();
EditTextPreference editText = (EditTextPreference) preferenceManager.findPreference("edit");
// 获取键值对
Log.e(TAG, "edit text保存的文本是: " + editText.getText());
}
}
上面的代码执行完毕之后,会得到诸如下面的执行结果: