无涯教程-Android - Preferences

44 阅读2分钟

Android共享首选项用于存储和检索原始信息。在android中,string,integer,long,number等被视为原始数据类型。

Android共享首选项用于存储键和值对中的数据,以便无涯教程可以根据键查询值。

首选项示例

让无涯教程看一下Android共享首选项的一个简单示例。

android preference directory output 1


从面板上拖动一个textview和两个按钮。

File: activity_main.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<relativelayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="example.learnfk.com.preferences.MainActivity">
    <textview android:id="@+id/txtPrefs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centervertical="true" android:text="Data:"></textview>
    <button android:id="@+id/storeinformation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/showinformation" android:layout_centerhorizontal="true" android:layout_margintop="18dp" android:text="Store Information"></button>
    <button android:id="@+id/showinformation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparenttop="true" android:layout_centerhorizontal="true" android:layout_margintop="17dp" android:text="Show Information"></button>
</relativelayout>

它是在res/values目录中创建的。

File: array.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<resources>
    <string-array name="listOptions">
        <item>English</item>
        <item>Hindi</item>
        <item>Other</item>
    </string-array>
    <string-array name="listValues">
        <item>English Language</item>
        <item>Hindi Language</item>
        <item>Other Language</item>
    </string-array>
</resources>

它是在Res/XML目录中创建的。

File: prefs.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<preferencescreen
    xmlns:android="http://schemas.android.com/apk/res/android">
    <preferencecategory android:summary="Username and password information" android:title="Login information">
        <edittextpreference android:key="username" android:summary="Please enter your login username" android:title="Username"></edittextpreference>
        <edittextpreference android:key="password" android:summary="Enter your password" android:title="Password"></edittextpreference>
    </preferencecategory>
    <preferencecategory android:summary="Username and password information" android:title="Settings">
        <checkboxpreference android:key="checkBox" android:summary="On/Off" android:title="Keep me logged in"></checkboxpreference>
        <listpreference android:entries="@array/listOptions" android:entryvalues="@array/listValues" android:key="listpref" android:summary="List preference example" android:title="List preference"></listpreference>
    </preferencecategory>
</preferencescreen>
File: MainActivity.java
package example.learnfk.com.preferences;

import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;

public class MainActivity extends AppCompatActivity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

    </span><span class="typ">Button</span><span class="pln"> storeinformation </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Button</span><span class="pun">)</span><span class="pln"> findViewById</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">storeinformation</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">Button</span><span class="pln"> showinformation </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">Button</span><span class="pun">)</span><span class="pln"> findViewById</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">showinformation</span><span class="pun">);</span><span class="pln">
    textView </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="typ">TextView</span><span class="pun">)</span><span class="pln"> findViewById</span><span class="pun">(</span><span class="pln">R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">txtPrefs</span><span class="pun">);</span><span class="pln">

    </span><span class="typ">View</span><span class="pun">.</span><span class="typ">OnClickListener</span><span class="pln"> listener </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">View</span><span class="pun">.</span><span class="typ">OnClickListener</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
        </span><span class="lit">@Override</span><span class="pln">
        </span><span class="kwd">public</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> onClick</span><span class="pun">(</span><span class="typ">View</span><span class="pln"> v</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
            </span><span class="kwd">switch</span><span class="pln"> </span><span class="pun">(</span><span class="pln">v</span><span class="pun">.</span><span class="pln">getId</span><span class="pun">())</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
                </span><span class="kwd">case</span><span class="pln"> R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">storeinformation</span><span class="pun">:</span><span class="pln">
                    </span><span class="typ">Intent</span><span class="pln"> intent </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Intent</span><span class="pun">(</span><span class="typ">MainActivity</span><span class="pun">.</span><span class="kwd">this</span><span class="pun">,</span><span class="typ">PrefsActivity</span><span class="pun">.</span><span class="kwd">class</span><span class="pun">);</span><span class="pln">
                    startActivity</span><span class="pun">(</span><span class="pln">intent</span><span class="pun">);</span><span class="pln">
                    </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">case</span><span class="pln"> R</span><span class="pun">.</span><span class="pln">id</span><span class="pun">.</span><span class="pln">showinformation</span><span class="pun">:</span><span class="pln">
                    displaySharedPreferences</span><span class="pun">();</span><span class="pln">
                    </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
                </span><span class="kwd">default</span><span class="pun">:</span><span class="pln">
                    </span><span class="kwd">break</span><span class="pun">;</span><span class="pln">
            </span><span class="pun">}</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">
    </span><span class="pun">};</span><span class="pln">
    storeinformation</span><span class="pun">.</span><span class="pln">setOnClickListener</span><span class="pun">(</span><span class="pln">listener</span><span class="pun">);</span><span class="pln">
    showinformation</span><span class="pun">.</span><span class="pln">setOnClickListener</span><span class="pun">(</span><span class="pln">listener</span><span class="pun">);</span><span class="pln">
</span><span class="pun">}</span><span class="pln">


</span><span class="kwd">private</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> displaySharedPreferences</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="typ">SharedPreferences</span><span class="pln"> prefs </span><span class="pun">=</span><span class="pln"> </span><span class="typ">PreferenceManager</span><span class="pun">.</span><span class="pln">getDefaultSharedPreferences</span><span class="pun">(</span><span class="typ">MainActivity</span><span class="pun">.</span><span class="kwd">this</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">String</span><span class="pln"> username </span><span class="pun">=</span><span class="pln"> prefs</span><span class="pun">.</span><span class="pln">getString</span><span class="pun">(</span><span class="str">"username"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Default NickName"</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">String</span><span class="pln"> passw </span><span class="pun">=</span><span class="pln"> prefs</span><span class="pun">.</span><span class="pln">getString</span><span class="pun">(</span><span class="str">"password"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Default Password"</span><span class="pun">);</span><span class="pln">
    </span><span class="kwd">boolean</span><span class="pln"> checkBox </span><span class="pun">=</span><span class="pln"> prefs</span><span class="pun">.</span><span class="pln">getBoolean</span><span class="pun">(</span><span class="str">"checkBox"</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
    </span><span class="typ">String</span><span class="pln"> listPrefs </span><span class="pun">=</span><span class="pln"> prefs</span><span class="pun">.</span><span class="pln">getString</span><span class="pun">(</span><span class="str">"listpref"</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Default list prefs"</span><span class="pun">);</span><span class="pln">


    </span><span class="typ">StringBuilder</span><span class="pln"> builder </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">StringBuilder</span><span class="pun">();</span><span class="pln">
    builder</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="str">"Username: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> username </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\n"</span><span class="pun">);</span><span class="pln">
    builder</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="str">"Password: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> passw </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\n"</span><span class="pun">);</span><span class="pln">
    builder</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="str">"Keep me logged in: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="typ">String</span><span class="pun">.</span><span class="pln">valueOf</span><span class="pun">(</span><span class="pln">checkBox</span><span class="pun">)</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"\n"</span><span class="pun">);</span><span class="pln">
    builder</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="str">"List preference: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> listPrefs</span><span class="pun">);</span><span class="pln">
    textView</span><span class="pun">.</span><span class="pln">setText</span><span class="pun">(</span><span class="pln">builder</span><span class="pun">.</span><span class="pln">toString</span><span class="pun">());</span><span class="pln">

</span><span class="pun">}</span><span class="pln">

}

File: PrefsActivity.java
package example.learnfk.com.preferences;

import android.os.Bundle; import android.preference.PreferenceActivity;

public class PrefsActivity extends PreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); } }

File: AndroidManifest.xml
<!--?xml version="1.0" encoding="utf-8"?-->
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android" package="example.learnfk.com.preferences">
    <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundicon="@mipmap/ic_launcher_round" android:supportsrtl="true" android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"></action>
                <category android:name="android.intent.category.LAUNCHER"></category>
            </intent-filter>
        </activity>
        <activity android:name=".PrefsActivity" android:theme="@android:style/Theme.Black.NoTitleBar"></activity>
    </application>
</manifest>

输出:

android preference example output 1android preference example output 2android preference example output 3android preference example output 4

参考链接

www.learnfk.com/android/and…