android preferences用法示例

本文概述

Android共享首选项用于存储和检索原始信息。在android中,字符串,整数,长整数,数字等被视为原始数据类型。

Android共享首选项用于将数据存储在键和值对中,以便我们可以基于键来检索值。

它广泛用于从用户那里获取信息,例如在设置中。

Android偏好设置示例

让我们看一个简单的android共享首选项示例。

activity_main.xml

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

<?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.srcmini02.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:" />

    <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
        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" />

</RelativeLayout>

array.xml

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

<?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>

prefs.xml

它在res / 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
            android:key="password"
            android:summary="Enter your password"
            android:title="Password" />
    </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" />

        <ListPreference
            android:entries="@array/listOptions"
            android:entryValues="@array/listValues"
            android:key="listpref"
            android:summary="List preference example"
            android:title="List preference" />
    </PreferenceCategory>
</PreferenceScreen>

主要活动类

package example.srcmini02.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);

        Button storeinformation = (Button) findViewById(R.id.storeinformation);
        Button showinformation = (Button) findViewById(R.id.showinformation);
        textView = (TextView) findViewById(R.id.txtPrefs);

        View.OnClickListener listener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                switch (v.getId()) {
                    case R.id.storeinformation:
                        Intent intent = new Intent(MainActivity.this, PrefsActivity.class);
                        startActivity(intent);
                        break;
                    case R.id.showinformation:
                        displaySharedPreferences();
                        break;
                    default:
                        break;
                }
            }
        };
        storeinformation.setOnClickListener(listener);
        showinformation.setOnClickListener(listener);
    }


    private void displaySharedPreferences() {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
        String username = prefs.getString("username", "Default NickName");
        String passw = prefs.getString("password", "Default Password");
        boolean checkBox = prefs.getBoolean("checkBox", false);
        String listPrefs = prefs.getString("listpref", "Default list prefs");


        StringBuilder builder = new StringBuilder();
        builder.append("Username: " + username + "\n");
        builder.append("Password: " + passw + "\n");
        builder.append("Keep me logged in: " + String.valueOf(checkBox) + "\n");
        builder.append("List preference: " + listPrefs);
        textView.setText(builder.toString());

    }

}

PrefsActivity类

package example.srcmini02.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);
    }
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="example.srcmini02.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" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity  android:name=".PrefsActivity"
            android:theme="@android:style/Theme.Black.NoTitleBar" >
        </activity>
    </application>

</manifest>

输出:

微信公众号
手机浏览(小程序)
0
分享到:
没有账号? 忘记密码?