Android首选项示例
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.javatpoint.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>
主要Activity类
package example.javatpoint.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类
```java
package example.javatpoint.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
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="example.javatpoint.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>