如何在Android中使用SharedPreferences来存储,获取和编辑值
我想存储一个时间值,需要检索和编辑它。 我怎样才能使用SharedPreferences
来做到这一点?
要获得共享首选项,请使用以下方法在您的活动中:
SharedPreferences prefs = this.getSharedPreferences( "com.example.app", Context.MODE_PRIVATE);
阅读偏好:
String dateTimeKey = "com.example.app.datetime"; // use a default value using new Date() long l = prefs.getLong(dateTimeKey, new Date().getTime());
编辑和保存偏好设置
Date dt = getSomeDate(); prefs.edit().putLong(dateTimeKey, dt.getTime()).apply();
android sdk的示例目录包含一个检索和存储共享首选项的例子。 它位于:
<android-sdk-home>/samples/android-<platformversion>/ApiDemos directory
编辑==>
我注意到,在这里写commit()
和apply()
也是很重要的。
如果值保存成功,则commit()
返回true
,否则返回false
。 它将值同步保存到SharedPreferences。
apply()
在2.3中添加,并且在成功或失败时不返回任何值。 它立即将值保存到SharedPreferences,但开始asynchronous提交。 更多细节在这里 。
要在共享首选项中存储值:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = preferences.edit(); editor.putString("Name","Harneet"); editor.apply();
从共享首选项中检索值:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); String name = preferences.getString("Name", ""); if(!name.equalsIgnoreCase("")) { name = name + " Sethi"; /* Edit the value here*/ }
编辑来自sharedpreference的数据
SharedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); editor.putString("text", mSaved.getText().toString()); editor.putInt("selection-start", mSaved.getSelectionStart()); editor.putInt("selection-end", mSaved.getSelectionEnd()); editor.apply();
从共享首选项中检索数据
SharedPreferences prefs = getPreferences(MODE_PRIVATE); String restoredText = prefs.getString("text", null); if (restoredText != null) { //mSaved.setText(restoredText, TextView.BufferType.EDITABLE); int selectionStart = prefs.getInt("selection-start", -1); int selectionEnd = prefs.getInt("selection-end", -1); /*if (selectionStart != -1 && selectionEnd != -1) { mSaved.setSelection(selectionStart, selectionEnd); }*/ }
编辑-
我从API Demo示例中摘取了这个片段。 它有一个编辑文本框…在这种情况下,它不是必需的。我是同样的评论
来写 :
SharedPreferences preferences = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_WORLD_WRITEABLE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("Authentication_Id",userid.getText().toString()); editor.putString("Authentication_Password",password.getText().toString()); editor.putString("Authentication_Status","true"); editor.apply();
读书 :
SharedPreferences prfs = getSharedPreferences("AUTHENTICATION_FILE_NAME", Context.MODE_PRIVATE); String Astatus = prfs.getString("Authentication_Status", "");
最简单的方法:
保存:
getPreferences(MODE_PRIVATE).edit().putString("Name of variable",value).commit();
检索:
your_variable = getPreferences(MODE_PRIVATE).getString("Name of variable",default value);
在首选项中设置值:
// MY_PREFS_NAME - a static String variable like: //public static final String MY_PREFS_NAME = "MyPrefsFile"; SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit(); editor.putString("name", "Elena"); editor.putInt("idName", 12); editor.commit();
从首选项中检索数据:
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); String restoredText = prefs.getString("text", null); if (restoredText != null) { String name = prefs.getString("name", "No name defined");//"No name defined" is the default value. int idName = prefs.getInt("idName", 0); //0 is the default value. }
更多信息:
使用共享首选项
共享首选项
存储信息
SharedPreferences preferences = getSharedPreferences(PREFS_NAME,Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putString("username", username.getText().toString()); editor.putString("password", password.getText().toString()); editor.putString("logged", "logged"); editor.commit();
重置您的偏好
SharedPreferences.Editor editor = preferences.edit(); editor.clear(); editor.commit();
如果您正在与团队中的其他开发人员一起制作一个大型应用程序,并且打算将所有事情都组织得很好,而不使用分散的代码或不同的SharedPreferences实例,则可以这样做:
//SharedPreferences manager class public class SharedPrefs { //SharedPreferences file name private static String SHARED_PREFS_FILE_NAME = "my_app_shared_prefs"; //here you can centralize all your shared prefs keys public static String KEY_MY_SHARED_BOOLEAN = "my_shared_boolean"; public static String KEY_MY_SHARED_FOO = "my_shared_foo"; //get the SharedPreferences object instance //create SharedPreferences file if not present private static SharedPreferences getPrefs(Context context) { return context.getSharedPreferences(SHARED_PREFS_FILE_NAME, Context.MODE_PRIVATE); } //Save Booleans public static void savePref(Context context, String key, boolean value) { getPrefs(context).edit().putBoolean(key, value).commit(); } //Get Booleans public static boolean getBoolean(Context context, String key) { return getPrefs(context).getBoolean(key, false); } //Get Booleans if not found return a predefined default value public static boolean getBoolean(Context context, String key, boolean defaultValue) { return getPrefs(context).getBoolean(key, defaultValue); } //Strings public static void save(Context context, String key, String value) { getPrefs(context).edit().putString(key, value).commit(); } public static String getString(Context context, String key) { return getPrefs(context).getString(key, ""); } public static String getString(Context context, String key, String defaultValue) { return getPrefs(context).getString(key, defaultValue); } //Integers public static void save(Context context, String key, int value) { getPrefs(context).edit().putInt(key, value).commit(); } public static int getInt(Context context, String key) { return getPrefs(context).getInt(key, 0); } public static int getInt(Context context, String key, int defaultValue) { return getPrefs(context).getInt(key, defaultValue); } //Floats public static void save(Context context, String key, float value) { getPrefs(context).edit().putFloat(key, value).commit(); } public static float getFloat(Context context, String key) { return getPrefs(context).getFloat(key, 0); } public static float getFloat(Context context, String key, float defaultValue) { return getPrefs(context).getFloat(key, defaultValue); } //Longs public static void save(Context context, String key, long value) { getPrefs(context).edit().putLong(key, value).commit(); } public static long getLong(Context context, String key) { return getPrefs(context).getLong(key, 0); } public static long getLong(Context context, String key, long defaultValue) { return getPrefs(context).getLong(key, defaultValue); } //StringSets public static void save(Context context, String key, Set<String> value) { getPrefs(context).edit().putStringSet(key, value).commit(); } public static Set<String> getStringSet(Context context, String key) { return getPrefs(context).getStringSet(key, null); } public static Set<String> getStringSet(Context context, String key, Set<String> defaultValue) { return getPrefs(context).getStringSet(key, defaultValue); } }
在你的活动中,你可以这样保存SharedPreferences
//saving a boolean into prefs SharedPrefs.savePref(this, SharedPrefs.KEY_MY_SHARED_BOOLEAN, booleanVar);
你可以用这种方式检索你的SharedPreferences
//getting a boolean from prefs booleanVar = SharedPrefs.getBoolean(this, SharedPrefs.KEY_MY_SHARED_BOOLEAN);
在任何应用程序中,都有可以通过PreferenceManager实例及其相关方法getDefaultSharedPreferences(Context)访问的默认首选项,
使用SharedPreference实例,可以使用getInt(String key,int defVal)检索任何首选项的int值。 我们对这种情况感兴趣的偏好是反击
在我们的例子中,我们可以使用edit()修改SharedPreference实例,并使用putInt(String key,int newVal)。我们增加了应用程序的计数,并超出了应用程序的范围。
为了进一步演示这个,重新启动你的应用程序,你会注意到每次你重新启动应用程序时计数都会增加。
PreferencesDemo.java
码:
package org.example.preferences; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.widget.TextView; public class PreferencesDemo extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Get the app's shared preferences SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this); // Get the value for the run counter int counter = app_preferences.getInt("counter", 0); // Update the TextView TextView text = (TextView) findViewById(R.id.text); text.setText("This app has been started " + counter + " times."); // Increment the counter SharedPreferences.Editor editor = app_preferences.edit(); editor.putInt("counter", ++counter); editor.commit(); // Very important } }
main.xml中
码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
单身人士共享喜好类。 这对未来可能会有所帮助。
import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; public class SharedPref { private static SharedPreferences mSharedPref; public static final String NAME = "NAME"; public static final String AGE = "AGE"; public static final String IS_SELECT = "IS_SELECT"; private SharedPref() { } public static void init(Context context) { if(mSharedPref == null) mSharedPref = context.getSharedPreferences(context.getPackageName(), Activity.MODE_PRIVATE); } public static String read(String key, String defValue) { return mSharedPref.getString(key, defValue); } public static void write(String key, String value) { SharedPreferences.Editor prefsEditor = mSharedPref.edit(); prefsEditor.putString(key, value); prefsEditor.commit(); } public static boolean read(String key, boolean defValue) { return mSharedPref.getBoolean(key, defValue); } public static void write(String key, boolean value) { SharedPreferences.Editor prefsEditor = mSharedPref.edit(); prefsEditor.putBoolean(key, value); prefsEditor.commit(); } public static Integer read(String key, int defValue) { return mSharedPref.getInt(key, defValue); } public static void write(String key, Integer value) { SharedPreferences.Editor prefsEditor = mSharedPref.edit(); prefsEditor.putInt(key, value).commit(); } }
只需在MainActivity上调用SharedPref.init()一次即可
SharedPref.init(getApplicationContext());
写数据
SharedPref.write(SharedPref.NAME, "XXXX");//save string in shared preference. SharedPref.write(SharedPref.AGE, "25");//save int in shared preference. SharedPref.write(SharedPref.IS_SELECT, true);//save boolean in shared preference.
读取数据
String name = SharedPref.read(SharedPref.NAME, null);//read string in shared preference. String age = SharedPref.read(SharedPref.AGE, 0);//read int in shared preference. String isSelect = SharedPref.read(SharedPref.IS_SELECT, false);//read boolean in shared preference.
如何通过SharedPreferences
存储login值的简单解决scheme。
您可以扩展MainActivity
类或其他类,您将在其中存储“您要保留的东西的值”。 把它写进作家和读者的课堂:
public static final String GAME_PREFERENCES_LOGIN = "Login";
这里InputClass
是input, OutputClass
是输出类。
// This is a storage, put this in a class which you can extend or in both classes: //(input and output) public static final String GAME_PREFERENCES_LOGIN = "Login"; // String from the text input (can be from anywhere) String login = inputLogin.getText().toString(); // then to add a value in InputCalss "SAVE", SharedPreferences example = getSharedPreferences(GAME_PREFERENCES_LOGIN, 0); Editor editor = example.edit(); editor.putString("value", login); editor.commit();
现在,您可以像其他课程一样在其他地方使用它。 以下是OutputClass
。
SharedPreferences example = getSharedPreferences(GAME_PREFERENCES_LOGIN, 0); String userString = example.getString("value", "defValue"); // the following will print it out in console Logger.getLogger("Name of a OutputClass".class.getName()).log(Level.INFO, userString);
存储在SharedPreferences中
SharedPreferences preferences = getSharedPreferences("temp", getApplicationContext().MODE_PRIVATE); Editor editor = preferences.edit(); editor.putString("name", name); editor.commit();
在SharedPreferences中获取
SharedPreferences preferences=getSharedPreferences("temp", getApplicationContext().MODE_PRIVATE); String name=preferences.getString("name",null);
注意:“temp”是sharedpreferences名称,“name”是input值。 如果值不退出,则返回null
SharedPreferences的基本思想是将东西存储在XML文件中。
-
声明你的xml文件path(如果你没有这个文件,Android会创build它,如果你有这个文件,Android将会访问它)。
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
-
将值写入共享首选项
prefs.edit().putLong("preference_file_key", 1010101).apply();
preference_file_key
是共享偏好文件的名称。 而1010101
是你需要存储的价值。apply()
最后是保存更改。 如果你从apply()
得到错误,把它改为commit()
。 所以这个替代句子是prefs.edit().putLong("preference_file_key", 1010101).commit();
-
从共享首选项中读取
SharedPreferences sp = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); long lsp = sp.getLong("preference_file_key", -1);
如果
preference_file_key
没有值,lsp
将为-1
。 如果'preference_file_key'有一个值,它会返回这个值。
整个写作的代码是
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); // Declare xml file prefs.edit().putLong("preference_file_key", 1010101).apply(); // Write the value to key.
阅读代码是
SharedPreferences sf = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE); // Declare xml file long lsp = sp.getLong("preference_file_key", -1); // Read the key and store in lsp
您可以使用此方法保存值:
public void savePreferencesForReasonCode(Context context, String key, String value) { SharedPreferences sharedPreferences = PreferenceManager .getDefaultSharedPreferences(context); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString(key, value); editor.commit(); }
使用这个方法你可以从SharedPreferences中获得值:
public String getPreferences(Context context, String prefKey) { SharedPreferences sharedPreferences = PreferenceManager .getDefaultSharedPreferences(context); return sharedPreferences.getString(prefKey, ""); }
这里prefKey
是你用来保存特定值的关键。 谢谢。
最好的做法
使用PreferenceManager创build接口 :
// Interface to save values in shared preferences and also for retrieve values from shared preferences public interface PreferenceManager { SharedPreferences getPreferences(); Editor editPreferences(); void setString(String key, String value); String getString(String key); void setBoolean(String key, boolean value); boolean getBoolean(String key); void setInteger(String key, int value); int getInteger(String key); void setFloat(String key, float value); float getFloat(String key); }
如何使用活动 / 片段 :
public class HomeActivity extends AppCompatActivity implements PreferenceManager{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout_activity_home); } @Override public SharedPreferences getPreferences(){ return getSharedPreferences("SP_TITLE", Context.MODE_PRIVATE); } @Override public SharedPreferences.Editor editPreferences(){ return getPreferences().edit(); } @Override public void setString(String key, String value) { editPreferences().putString(key, value).commit(); } @Override public String getString(String key) { return getPreferences().getString(key, ""); } @Override public void setBoolean(String key, boolean value) { editPreferences().putBoolean(key, value).commit(); } @Override public boolean getBoolean(String key) { return getPreferences().getBoolean(key, false); } @Override public void setInteger(String key, int value) { editPreferences().putInt(key, value).commit(); } @Override public int getInteger(String key) { return getPreferences().getInt(key, 0); } @Override public void setFloat(String key, float value) { editPreferences().putFloat(key, value).commit(); } @Override public float getFloat(String key) { return getPreferences().getFloat(key, 0); } }
注意:将SharedPreference的密钥replace为SP_TITLE 。
例子:
在共享中 存储string :
setString("my_key", "my_value");
从共享中获取string :
String strValue = getString("my_key");
希望这会帮助你。
保存
PreferenceManager.getDefaultSharedPreferences(this).edit().putString("VarName","your value").apply();
检索:
String name = PreferenceManager.getDefaultSharedPreferences(this).getString("VarName","defaultValue");
缺省值为:如果此首选项不存在,则返回值。
您可以在某些情况下使用getActivity()或getApplicationContext()更改“ this ”
人们推荐如何使用SharedPreferences有很多种方法。 我在这里做了一个演示项目 。 示例中的要点是使用ApplicationContext&single sharedpreferences对象 。 这演示了如何使用SharedPreferences和以下function:
- 使用singelton类来访问/更新SharedPreferences
- 没有必要传递上下文总是读/写SharedPreferences
- 它使用apply()而不是commit()
- apply()是asynchronous保存,不会返回任何内容,它会先更新内存中的值,然后将更改以asynchronous方式写入磁盘。
- commit()是synchronus保存的,它根据结果返回true / false。 更改将同步写入磁盘
- 适用于Android 2.3+版本
用法示例如下: –
MyAppPreference.getInstance().setSampleStringKey("some_value"); String value= MyAppPreference.getInstance().getSampleStringKey();
获取源代码在这里 &详细的API可以在这里finddeveloper.android.com
editor.putString("text", mSaved.getText().toString());
在这里, mSaved
可以是我们可以从中提取string的任何文本视图或编辑文本。 你可以简单地指定一个string。 这里的文本将是保存从mSaved
(TextView或Edittext)获得的值的mSaved
。
SharedPreferences prefs = this.getSharedPreferences("com.example.app", Context.MODE_PRIVATE);
也不需要使用包名即“com.example.app”保存首选项文件。 你可以提到你自己的首选名字。 希望这可以帮助!!
编辑
SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString("yourValue", value); editor.commit();
读
SharedPreferences pref = getSharedPreferences("YourPref", MODE_PRIVATE); value= pref.getString("yourValue", "");
使用这个简单的库 ,这里是如何调用SharedPreferences
TinyDB tinydb = new TinyDB(context); tinydb.putInt("clickCount", 2); tinydb.putString("userName", "john"); tinydb.putBoolean("isUserMale", true); tinydb.putList("MyUsers", mUsersArray); tinydb.putImagePNG("DropBox/WorkImages", "MeAtlunch.png", lunchBitmap); //These plus the corresponding get methods are all Included
我想补充一点,在使用SharedPreferences时,这个问题的大部分代码片段都会有类似MODE_PRIVATE的内容。 那么,MODE_PRIVATE意味着无论你写入这个共享首选项,只能被你的应用程序读取。
无论您传递给getSharedPreferences()方法的键是什么,android都会创build一个具有该名称的文件并将其中的首选项数据存储到其中。 另外请记住,当您打算为您的应用程序使用多个首选项文件时,应该使用getSharedPreferences()。 如果打算使用单个首选项文件并将所有键值对存储在其中,则使用getSharedPreference()方法。 奇怪,为什么每个人(包括我自己)都只是简单地使用getSharedPreferences(),而不理解上述两者之间的区别。
以下video教程应该帮助https://www.youtube.com/watch?v=2PcAQ1NBy98
简单和无忧::“Android的SharedPreferences助手”库
比从来没有迟到:我创build了“Android-SharedPreferences-Helper”库来帮助减less使用SharedPreferences
的复杂性和工作量。 它还提供了一些扩展function。 它提供的几件事情如下:
- 一行初始化和设置
- 轻松select是使用默认首选项还是自定义首选项文件
- 预定义(数据types默认值)和可定制(您可以select)每个数据types的默认值
- 只需要一个额外的参数就可以设置不同的默认值
- 您可以像为默认类一样注册和取消注册OnSharedPreferenceChangeListener
dependencies { ... ... compile(group: 'com.viralypatel.sharedpreferenceshelper', name: 'library', version: '1.1.0', ext: 'aar') }
SharedPreferencesHelper对象声明:(build议在课堂上)
SharedPreferencesHelper sph;
SharedPreferencesHelper对象的实例化(推荐在onCreate()方法中)
// use one of the following ways to instantiate sph = new SharedPreferencesHelper(this); //this will use default shared preferences sph = new SharedPreferencesHelper(this, "myappprefs"); // this will create a named shared preference file sph = new SharedPreferencesHelper(this, "myappprefs", 0); // this will allow you to specify a mode
将数值放入共享首选项
相当简单! 与默认方式(使用SharedPreferences类时)不同,您不需要随时调用.edit()
和.commit()
。
sph.putBoolean("boolKey", true); sph.putInt("intKey", 123); sph.putString("stringKey", "string value"); sph.putLong("longKey", 456876451); sph.putFloat("floatKey", 1.51f); // putStringSet is supported only for android versions above HONEYCOMB Set name = new HashSet(); name.add("Viral"); name.add("Patel"); sph.putStringSet("name", name);
而已! 您的值存储在共享首选项中。
从共享首选项获取值
再次,只是一个简单的方法与密钥名称调用。
sph.getBoolean("boolKey"); sph.getInt("intKey"); sph.getString("stringKey"); sph.getLong("longKey"); sph.getFloat("floatKey"); // getStringSet is supported only for android versions above HONEYCOMB sph.getStringSet("name");
它还有很多其他的扩展function
在GitHub存储库页面上检查扩展function,使用和安装说明等细节。
在这里,我创build了一个帮助器类,以在android中使用首选项。
这是助手类:
public class PrefsUtil { public static SharedPreferences getPreference() { return PreferenceManager.getDefaultSharedPreferences(Applicatoin.getAppContext()); } public static void putBoolean(String key, boolean value) { getPreference().edit().putBoolean(key, value) .apply(); } public static boolean getBoolean(String key) { return getPreference().getBoolean(key, false); } public static void putInt(String key, int value) { getPreference().edit().putInt(key, value).apply(); } public static void delKey(String key) { getPreference().edit().remove(key).apply(); } }
以函数方式存储和检索全局variables。 要testing,请确保您的页面上有Textview项目,取消注释代码中的两行并运行。 然后再评论这两行,然后运行。
这里TextView的id是用户名和密码。
在你想使用它的每个类中,最后添加这两个例程。 我想这个例程是全球性的例程,但不知道如何。 这工作。
各种各样的变种可用。 它将variables存储在“MyFile”中。 你可以改变你的方式。
你用它来调用它
storeSession("username","frans"); storeSession("password","!2#4%");***
variables的用户名将被填入“frans”和密码“!2#4%”。 即使在重新启动之后,它们也可用。
并使用它来检索它
password.setText(getSession(("password"))); usernames.setText(getSession(("username")));
低于我的grid.java的整个代码
package nl.yentel.yenteldb2; import android.content.SharedPreferences; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class Grid extends AppCompatActivity { private TextView usernames; private TextView password; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_grid); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); getSupportActionBar().setDisplayHomeAsUpEnabled(true); ***// storeSession("username","frans.eilering@gmail.com"); //storeSession("password","mijn wachtwoord");*** password = (TextView) findViewById(R.id.password); password.setText(getSession(("password"))); usernames=(TextView) findViewById(R.id.username); usernames.setText(getSession(("username"))); } public void storeSession(String key, String waarde) { SharedPreferences pref = getApplicationContext().getSharedPreferences("MyFile", MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); editor.putString(key, waarde); editor.commit(); } public String getSession(String key) { //http://androidexample.com/Android_SharedPreferences_Basics/index.php?view=article_discription&aid=126&aaid=146 SharedPreferences pref = getApplicationContext().getSharedPreferences("MyFile", MODE_PRIVATE); SharedPreferences.Editor editor = pref.edit(); String output = pref.getString(key, null); return output; } }
在下面你可以findtextview项目
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="usernames" android:id="@+id/username" android:layout_below="@+id/textView" android:layout_alignParentStart="true" android:layout_marginTop="39dp" android:hint="hier komt de username" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="password" android:id="@+id/password" android:layout_below="@+id/user" android:layout_alignParentStart="true" android:hint="hier komt het wachtwoord" />
我为sharedpreferences写了一个辅助类:
import android.content.Context; import android.content.SharedPreferences; /** * Created by mete_ on 23.12.2016. */ public class HelperSharedPref { Context mContext; public HelperSharedPref(Context mContext) { this.mContext = mContext; } /** * * @param key Constant RC * @param value Only String, Integer, Long, Float, Boolean types */ public void saveToSharedPref(String key, Object value) throws Exception { SharedPreferences.Editor editor = mContext.getSharedPreferences(key, Context.MODE_PRIVATE).edit(); if (value instanceof String) { editor.putString(key, (String) value); } else if (value instanceof Integer) { editor.putInt(key, (Integer) value); } else if (value instanceof Long) { editor.putLong(key, (Long) value); } else if (value instanceof Float) { editor.putFloat(key, (Float) value); } else if (value instanceof Boolean) { editor.putBoolean(key, (Boolean) value); } else { throw new Exception("Unacceptable object type"); } editor.commit(); } /** * Return String * @param key * @return null default is null */ public String loadStringFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); String restoredText = prefs.getString(key, null); return restoredText; } /** * Return int * @param key * @return null default is -1 */ public Integer loadIntegerFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Integer restoredText = prefs.getInt(key, -1); return restoredText; } /** * Return float * @param key * @return null default is -1 */ public Float loadFloatFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Float restoredText = prefs.getFloat(key, -1); return restoredText; } /** * Return long * @param key * @return null default is -1 */ public Long loadLongFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Long restoredText = prefs.getLong(key, -1); return restoredText; } /** * Return boolean * @param key * @return null default is false */ public Boolean loadBooleanFromSharedPref(String key) throws Exception { SharedPreferences prefs = mContext.getSharedPreferences(key, Context.MODE_PRIVATE); Boolean restoredText = prefs.getBoolean(key, false); return restoredText; } }
I have created a Helper class to make my Life easy. This is a generic class and has a-lot of methods those are commonly used in Apps like Shared Preferences, Email Validity, Date Time Format. Copy this class in your code and access it's methods wherever you need.
import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.SharedPreferences; import android.support.v4.app.FragmentActivity; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.Toast; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.regex.PatternSyntaxException; /** * Created by Zohaib Hassan on 3/4/2016. */ public class Helper { private static ProgressDialog pd; public static void saveData(String key, String value, Context context) { SharedPreferences sp = context.getApplicationContext() .getSharedPreferences("appData", 0); SharedPreferences.Editor editor; editor = sp.edit(); editor.putString(key, value); editor.commit(); } public static void deleteData(String key, Context context){ SharedPreferences sp = context.getApplicationContext() .getSharedPreferences("appData", 0); SharedPreferences.Editor editor; editor = sp.edit(); editor.remove(key); editor.commit(); } public static String getSaveData(String key, Context context) { SharedPreferences sp = context.getApplicationContext() .getSharedPreferences("appData", 0); String data = sp.getString(key, ""); return data; } public static long dateToUnix(String dt, String format) { SimpleDateFormat formatter; Date date = null; long unixtime; formatter = new SimpleDateFormat(format); try { date = formatter.parse(dt); } catch (Exception ex) { ex.printStackTrace(); } unixtime = date.getTime(); return unixtime; } public static String getData(long unixTime, String formate) { long unixSeconds = unixTime; Date date = new Date(unixSeconds); SimpleDateFormat sdf = new SimpleDateFormat(formate); String formattedDate = sdf.format(date); return formattedDate; } public static String getFormattedDate(String date, String currentFormat, String desiredFormat) { return getData(dateToUnix(date, currentFormat), desiredFormat); } public static double distance(double lat1, double lon1, double lat2, double lon2, char unit) { double theta = lon1 - lon2; double dist = Math.sin(deg2rad(lat1)) * Math.sin(deg2rad(lat2)) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.cos(deg2rad(theta)); dist = Math.acos(dist); dist = rad2deg(dist); dist = dist * 60 * 1.1515; if (unit == 'K') { dist = dist * 1.609344; } else if (unit == 'N') { dist = dist * 0.8684; } return (dist); } /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ /* :: This function converts decimal degrees to radians : */ /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ private static double deg2rad(double deg) { return (deg * Math.PI / 180.0); } /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ /* :: This function converts radians to decimal degrees : */ /* ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */ private static double rad2deg(double rad) { return (rad * 180.0 / Math.PI); } public static int getRendNumber() { Random r = new Random(); return r.nextInt(360); } public static void hideKeyboard(Context context, EditText editText) { InputMethodManager imm = (InputMethodManager) context .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0); } public static void showLoder(Context context, String message) { pd = new ProgressDialog(context); pd.setCancelable(false); pd.setMessage(message); pd.show(); } public static void showLoderImage(Context context, String message) { pd = new ProgressDialog(context); pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); pd.setCancelable(false); pd.setMessage(message); pd.show(); } public static void dismissLoder() { pd.dismiss(); } public static void toast(Context context, String text) { Toast.makeText(context, text, Toast.LENGTH_LONG).show(); } /* public static Boolean connection(Context context) { ConnectionDetector connection = new ConnectionDetector(context); if (!connection.isConnectingToInternet()) { Helper.showAlert(context, "No Internet access...!"); //Helper.toast(context, "No internet access..!"); return false; } else return true; }*/ public static void removeMapFrgment(FragmentActivity fa, int id) { android.support.v4.app.Fragment fragment; android.support.v4.app.FragmentManager fm; android.support.v4.app.FragmentTransaction ft; fm = fa.getSupportFragmentManager(); fragment = fm.findFragmentById(id); ft = fa.getSupportFragmentManager().beginTransaction(); ft.remove(fragment); ft.commit(); } public static AlertDialog showDialog(Context context, String message) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage(message); builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { // TODO Auto-generated method stub } }); return builder.create(); } public static void showAlert(Context context, String message) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Alert"); builder.setMessage(message) .setPositiveButton("Ok", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.dismiss(); } }).show(); } public static boolean isURL(String url) { if (url == null) return false; boolean foundMatch = false; try { Pattern regex = Pattern .compile( "\\b(?:(https?|ftp|file)://|www\\.)?[-A-Z0-9+&#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]\\.[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); Matcher regexMatcher = regex.matcher(url); foundMatch = regexMatcher.matches(); return foundMatch; } catch (PatternSyntaxException ex) { // Syntax error in the regular expression return false; } } public static boolean atLeastOneChr(String string) { if (string == null) return false; boolean foundMatch = false; try { Pattern regex = Pattern.compile("[a-zA-Z0-9]", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE); Matcher regexMatcher = regex.matcher(string); foundMatch = regexMatcher.matches(); return foundMatch; } catch (PatternSyntaxException ex) { // Syntax error in the regular expression return false; } } public static boolean isValidEmail(String email, Context context) { String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[AZ]{2,4}$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (matcher.matches()) { return true; } else { // Helper.toast(context, "Email is not valid..!"); return false; } } public static boolean isValidUserName(String email, Context context) { String expression = "^[0-9a-zA-Z]+$"; CharSequence inputStr = email; Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE); Matcher matcher = pattern.matcher(inputStr); if (matcher.matches()) { return true; } else { Helper.toast(context, "Username is not valid..!"); return false; } } public static boolean isValidDateSlash(String inDate) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy"); dateFormat.setLenient(false); try { dateFormat.parse(inDate.trim()); } catch (ParseException pe) { return false; } return true; } public static boolean isValidDateDash(String inDate) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd-mm-yyyy"); dateFormat.setLenient(false); try { dateFormat.parse(inDate.trim()); } catch (ParseException pe) { return false; } return true; } public static boolean isValidDateDot(String inDate) { SimpleDateFormat dateFormat = new SimpleDateFormat("dd.mm.yyyy"); dateFormat.setLenient(false); try { dateFormat.parse(inDate.trim()); } catch (ParseException pe) { return false; } return true; } }