本篇文章给大家谈谈android–SharedPreferences只返回默认值,以及android返回按钮的知识点,同时本文还将给你拓展10.Android-SharedPreferences使用、
本篇文章给大家谈谈android – SharedPreferences只返回默认值,以及android 返回按钮的知识点,同时本文还将给你拓展10.Android-SharedPreferences使用、Android Q 中不推荐使用 PreferenceManager getDefaultSharedPreferences、Android SharedPreferences、Android SharedPreferences 一般的读写等相关知识,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:- android – SharedPreferences只返回默认值(android 返回按钮)
- 10.Android-SharedPreferences使用
- Android Q 中不推荐使用 PreferenceManager getDefaultSharedPreferences
- Android SharedPreferences
- Android SharedPreferences 一般的读写
android – SharedPreferences只返回默认值(android 返回按钮)
我的代码如下:
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); editor.putInt("favid"+id,1); editor.commit(); Toast.makeText(getApplicationContext(),"Select as favorite",Toast.LENGTH_SHORT).show();
现在我想检索那些数据,所以我在其他活动中使用了以下代码:
strFav = new ArrayList<Integer>(); if(strFav.size()>0) strFav.clear(); SharedPreferences prefs = getPreferences(MODE_PRIVATE); for (int i = 1; i < 19; i++) { int favid = prefs.getInt("favid"+i,-1); if (favid != -1) { strFav.add(i); } }
在检索数据时,我得到的所有值都是-1.
任何人都可以帮助我为什么会这样吗?我已经将许多条目作为1提交,但我仍然得到-1所有结果.
解决方法
Retrieve a SharedPreferences object for accessing preferences that are private to this activity.
因此,如果要在活动之间共享首选项,则应使用具有指定名称的getSharedPreferences
.
10.Android-SharedPreferences使用
1.SharedPreferences介绍
SharedPreferences,它是一个轻量级的配置文件类,用于保存软件配置参数. 采用xml文件形式存储在/data/data/包名/shared_prefs/下
优点在于:
- 轻量级,以键值对的方式进行存储,使用方便,易于理解
- 程序卸载后会也会一并被清除,不会残留信息
缺点在于:
- 不支持跨多个进程使用
- 键值数据如果过多,会导致界面卡顿
2.如何获取SharedPreferences
2.1 通过Context .getSharedPreferences()方法
public SharedPreferences getSharedPreferences(String name, int mode);
//name:指定文件名称
//mode: 可以填入MODE_PRIVATE(文件只能由调用应用程序访问)、
//MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持所有人可读)、MODE_WORLD_WRITEABLE(文件支持所有人可写)
2.2 通过Activity 类中的 getPreferences()方法
public SharedPreferences getPreferences(int mode);
//mode: 可以填入MODE_PRIVATE(文件只能由调用应用程序访问)、MODE_APPEND(追加内容模式)、MODE_WORLD_READABLE(文件支持所有人可读)、MODE_WORLD_WRITEABLE(文件支持所有人可写)
//生成的配置文件名字会默认将当前活动的类名作为文件名.比如在MainActivity类下使用的,则会生成MAinActivity.xml
2.3 通过PreferenceManager中的静态public getDefaultSharedPreferences()方法
public static SharedPreferences getDefaultSharedPreferences(Context context);
//mode会自动设置为MODE_PRIVATE(文件只能由调用应用程序访问)
//生成的配置文件名字会默认将包名作为文件名.
PS:后面示例会演示。
3.如何通过SharedPreferences来读写配置参数
通过下面方法来进行读操作:
上面的第二个参数defValue:表示默认值,如果key值未找到,则将defValue默认值返回过来
通过Editor edit()成员方法来获取Editor类来实现写操作,如下所示:
Editor类下的常用方法有:
Editor putInt(String key, int value); //向key键里写入int类型的值
Editor putString(String key, String value); //向key键里写入String类型的值
Editor putStringSet(String key, Set<String> values); //向key键里写入Set类型的值
boolean commit(); //提交数据,写入io
4.使用3种方法生成SharedPreferences配置文件示例
写MainActivity.java的onCreate():
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences sp1 = MainActivity.this.getSharedPreferences("info1", MODE_PRIVATE);
//写入数据
Editor edit1 = sp1.edit();
edit1.putString("name", "test1");
edit1.commit();
//读取数据
Log.v("MainActivity","sp1: "+sp1.getString("name", ""));
SharedPreferences sp2 = MainActivity.this.getPreferences(MODE_PRIVATE);
//写入数据
Editor edit2 = sp2.edit();
edit2.putString("name", "test2");
edit2.commit();
//读取数据
Log.v("MainActivity","sp2: "+sp1.getString("name", ""));
SharedPreferences sp3 = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
//写入数据
Editor edit3 = sp3.edit();
edit3.putString("name", "test3");
edit3.commit();
//读取数据
Log.v("MainActivity","sp3: "+sp1.getString("name", ""));
}
运行后,可以看到在data/data/com.example.sdreadWrite/shared_prefs下自动生成了3个xml文件:
- info1.xml: 通过MainActivity.this.getSharedPreferences("info1", MODE_PRIVATE);实现的
- MainActivity.xml: 通过MainActivity.this.getPreferences(MODE_PRIVATE);实现的
- com.example.sdreadWrite_preferences.xml: 通过PreferenceManager.getDefaultSharedPreferences(MainActivity.this);实现的
打开info1.xml试试:
打开log打印(可以看到读出来的内容和XML配置一样):
Android Q 中不推荐使用 PreferenceManager getDefaultSharedPreferences
PreferenceManager getDefaultSharedPreferences
在Android
10中已弃用。我该如何更换它?
答案1
小编典典可以使用PreferenceManager
ieandroidx.preference.PreferenceManager
和
not的 Android 10 支持库版本android.preference.PreferenceManager
。
请记住将以下内容添加到您的 build.gradle :
implementation ''androidx.preference:preference:1.1.1''
Android SharedPreferences
一、文件操作模式
- Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容。
- Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
- Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
- MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
- MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
二、写入文件
SharedPreferences sharedPreferences= getSharedPreferences("data",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("name", “Tom”);
editor.putInt("age", 28);
editor.putBoolean("marrid",false);
editor.commit();
三、读取数据
SharedPreferences sharedPreferences= getSharedPreferences("data", Context .MODE_PRIVATE); String userId=sharedPreferences.getString("name","数据不存在,时候的代替值");
四、删除指定数据
editor.remove("name");
editor.commit();
五、清空数据
editor.clear();
editor.commit();
Android SharedPreferences 一般的读写
package com.example.sharedpreferences;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
private final String SharedPreferences_Name = "SharedPreferences_name";
private final String USER_NAME = "user_name";
private final String USER_PASSWORD = "user_password";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
wrtieSharedPreferences();
readSharedPreferences();
}
// 读出记录
private void readSharedPreferences() {
SharedPreferences sp = this.getSharedPreferences(
SharedPreferences_Name, Context.MODE_PRIVATE);
String username = sp.getString(USER_NAME, "无值");
Log.d("存储到本地的用户名", username);
}
// 写入记录到本地
private void wrtieSharedPreferences() {
SharedPreferences shared = this.getSharedPreferences(
SharedPreferences_Name, Context.MODE_PRIVATE);
Editor edit = shared.edit();
edit.putString(USER_NAME, "zhangphil");
edit.putString(USER_PASSWORD, "12345678");
// 提交
edit.commit();
}
}
今天关于android – SharedPreferences只返回默认值和android 返回按钮的分享就到这里,希望大家有所收获,若想了解更多关于10.Android-SharedPreferences使用、Android Q 中不推荐使用 PreferenceManager getDefaultSharedPreferences、Android SharedPreferences、Android SharedPreferences 一般的读写等相关知识,可以在本站进行查询。
本文标签: