Android 首选项的实现

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的类;添加完后应该不会再出现其他啥问题了

啊塔塔那库吗。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值