Android 首选项的代码流程
在Android的软件应用中,有些时候我们需要对其设置一些属性,比如:游戏设置,或者播放器设置。这些设置是依照客户自定义的,并不希望每一次启动App都去手动设置,因此我们可以将其设置为首选项供用户选择,这样每一次启动相应的App就不需要重新设置;
代码流程如下
先创建一个空的Android Application Project,将activity_main.xml的主布局设置为LinerLayout;并添加一个按钮,效果图如下:
在res目录下新建一个名称为xml的目录,在里面新建一个 Android XML File,命名名称全为小写,Resource Typ 选择为Preference,RootElement选择为PreferenScreen,然后finish;
打开代码编辑器,之后可以在里面手动编码添加三个控件,或者在可视化界面中添加,效果如下:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
android:key="checkbox"
android:summaryOff="已经关闭"
android:summaryOn="已经开启"
android:title="是否开启" />
<ListPreference
android:entries="@array/entries"
android:entryValues="@array/values"
android:key="list"
android:summary="请点击选择"
android:title="选择一个选项" />
<EditTextPreference
android:dialogTitle="请输入你的名字"
android:dialogMessage="麻烦你了么么哒"
android:summary="请在这里输入"
android:title="请输入"
android:key="editText"/>
</PreferenceScreen>
在这里,需要注意,无论添加了哪一个控件
,必须添加一个name属性,因为Preference是采用键值对的,在xml中设置一个Key
在自定义的java文件中实现这三个按钮
- 新建一个类继承自PreferenceActivity并实现create()方法,在oncreate()方法中获取之前配置好xml文件,并在oncreate()方法中获取到manager();之后可以根据manager获取到三个自定义的首选项
public class MyPreferenceActivity extends PreferenceActivity {
private PreferenceManager manager;
private CheckBoxPreference cbp;
private ListPreference list;
private EditTextPreference text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.mypref);
manager = getPreferenceManager();
cbp = (CheckBoxPreference) manager.findPreference("checkbox");
Toast.makeText(getApplicationContext(), "当前的状态为:"+cbp.isChecked(), Toast.LENGTH_SHORT).show();
list = (ListPreference) manager.findPreference("list");
Toast.makeText(getApplicationContext(),list.getEntry()+ "当前的开发环境:"+list.getValue(), Toast.LENGTH_SHORT).show();
text = (EditTextPreference) manager.findPreference("editText");
Toast.makeText(getApplicationContext(),"当前的文字描述为:"+text.getText(), Toast.LENGTH_SHORT).show();
}
}
- 除了CheckBoxPreference和EditTextPreference外,ListPreference需要单独设置用于选择的values,在res目录下的value目录下新建一个Android XML File并在RootElement选择为Resource,之后再里面添加
<string-array ></string-array>
这个属性
- xml配置如下:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="entries">
<item>java</item>
<item>Swift</item>
<item>C#</item>
<item>C++</item>
</string-array>
<string-array name="values">
<item>Eclipse</item>
<item>Xcode</item>
<item>Visual Studio</item>
<item>Visual Studio</item>
</string-array>
</resources>
之后就可以运行程序了。哇哈哈,效果图我就不贴了哇哈哈。如果运行会报错的话,原因可能是:没有在AndroidManifest.xml添加自定义的继承PreferenceActivity的类;添加完后应该不会再出现其他啥问题了
啊塔塔那库吗。。