欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android入門之使用SharedPreference存取信息詳解

 更新時(shí)間:2022年12月20日 13:53:41   作者:TGITCIC  
這篇文章主要為大家詳細(xì)介紹了Android如何使用SharedPreference實(shí)現(xiàn)存取信息,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Android有一定的幫助,需要的可以參考一下

簡(jiǎn)介

上一篇我們介紹了在android里如何讀寫(xiě)本地文件。我們有一種場(chǎng)景,類似網(wǎng)頁(yè)的cookie,要把用戶的一些儲(chǔ)如上一次登錄、使用的痕跡等信息保存下來(lái)以便于每次不需要做重復(fù)“填表單”的操作,當(dāng)在這種場(chǎng)景下我們?nèi)绻彩褂帽镜匚募x寫(xiě)的話顯然是“太重”了。因此android提供了一種輕量級(jí)存儲(chǔ)叫SharedPreference專門用來(lái)存儲(chǔ)這種場(chǎng)景下的數(shù)據(jù)。

SharedPreference原理

比如下面這樣的一個(gè)登錄界面,我們把用戶登錄成功后的信息保存在SharedPreference中,這樣用戶下次打開(kāi)手機(jī)那么相應(yīng)的登錄過(guò)的信息就可以直接自動(dòng)填充就可以了。這種場(chǎng)景我們就是使用的SharedPreference來(lái)做存儲(chǔ)的。

SharedPreference的存儲(chǔ)

SharedPreference一旦生成后,我們使用Android Studio里的device file explorer

我們可以在data\data\應(yīng)用實(shí)例全package路徑里的\shared_prefs文件夾下可以看到我們生成的shared preference的.xml文件。

打開(kāi)這個(gè)文件我們看到了什么?

后端代碼

SharedPreferenceHelper.java

package org.mk.android.demo;
 
import android.content.Context;
import android.content.SharedPreferences;
import android.widget.Toast;
 
import java.util.HashMap;
import java.util.Map;
 
public class SharedPreferenceHelper {
 
    private final static String SP_TAG="demosp";
    private Context mContext;
 
    public SharedPreferenceHelper() {
    }
 
    public SharedPreferenceHelper(Context mContext) {
        this.mContext = mContext;
    }
    //定義一個(gè)保存數(shù)據(jù)的方法
    public void save(String loginId, String password) {
        SharedPreferences sp = mContext.getSharedPreferences(SP_TAG, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("loginId", loginId);
        editor.putString("password", password);
        editor.commit();
        Toast.makeText(mContext, "信息已寫(xiě)入SharedPreference["+SP_TAG+"]中", Toast.LENGTH_SHORT).show();
    }
 
    //定義一個(gè)讀取SP文件的方法
    public Map<String, String> read() {
        Map<String, String> data = new HashMap<String, String>();
        SharedPreferences sp = mContext.getSharedPreferences(SP_TAG, Context.MODE_PRIVATE);
        data.put("loginId", sp.getString("loginId", ""));
        data.put("password", sp.getString("password", ""));
        return data;
    }
}

HomePage.java

package org.mk.android.demo;
 
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
 
import java.util.Map;
 
public class HomePage extends AppCompatActivity {
    private SharedPreferenceHelper spHelper;
    private Context ctx;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);
        Button buttonBack=(Button)findViewById(R.id.buttonBack);
        buttonBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }
    @Override
    protected void onStart() {
        super.onStart();
        ctx = getApplicationContext();
        spHelper = new SharedPreferenceHelper(ctx);
        Map<String, String> data = spHelper.read();
        Toast.makeText(ctx, "從SharedPreference中讀到信息LoginId->" + data.get("loginId") + " password->" + data.get("password"), Toast.LENGTH_SHORT).show();
    }
}

MainActivity.java

package org.mk.android.demo;
 
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
 
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
 
import java.util.Map;
 
public class MainActivity extends AppCompatActivity {
    private EditText editLoginId;
    private EditText editPassword;
    private Button buttonLogin;
    private String strLoginId;
    private String strPassword;
    private SharedPreferenceHelper spHelper;
    private Context ctx;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ctx = getApplicationContext();
        spHelper = new SharedPreferenceHelper(ctx);
        bindView();
    }
 
    private void bindView(){
        editLoginId = (EditText)findViewById(R.id.editLoginid);
        editPassword = (EditText)findViewById(R.id.editPassword);
        buttonLogin = (Button)findViewById(R.id.buttonLogin);
        buttonLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                strLoginId=editLoginId.getText().toString();
                strPassword=editPassword.getText().toString();
                spHelper.save(strLoginId,strPassword);
                Intent homeIt = new Intent(MainActivity.this, HomePage.class);
                startActivity(homeIt);
            }
        });
    }
    @Override
    protected void onStart() {
        super.onStart();
        ctx = getApplicationContext();
        spHelper = new SharedPreferenceHelper(ctx);
        Map<String, String> data = spHelper.read();
        Toast.makeText(ctx, "從SharedPreference中讀到信息LoginId->" + data.get("loginId") + " password->" + data.get("password"), Toast.LENGTH_SHORT).show();
    }
}

核心代碼導(dǎo)讀:

1.當(dāng)我們點(diǎn)擊了登錄按鈕后,我們把當(dāng)前用戶的登錄信息通過(guò)SharedPreferenceHelper保存進(jìn)demo_sp.xml這個(gè)SharedPreference文件中去;

2.當(dāng)我們每次切換到activity_main主界面時(shí),在onStart中觸發(fā)讀取上次保存進(jìn)SharedPreference中的內(nèi)容并以Toast顯示;

很簡(jiǎn)單吧,自己動(dòng)一下手試試吧。

以上就是Android入門之使用SharedPreference存取信息詳解的詳細(xì)內(nèi)容,更多關(guān)于Android SharedPreference存取信息的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • android實(shí)現(xiàn)簡(jiǎn)單的矩形裁剪框

    android實(shí)現(xiàn)簡(jiǎn)單的矩形裁剪框

    這篇文章主要為大家詳細(xì)介紹了android實(shí)現(xiàn)簡(jiǎn)單的矩形裁剪框,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Flutter開(kāi)發(fā)之動(dòng)態(tài)權(quán)限的使用

    Flutter開(kāi)發(fā)之動(dòng)態(tài)權(quán)限的使用

    眾所周知,Android在6.0版本后將權(quán)限修改成了動(dòng)態(tài)權(quán)限,而iOS則一直使用的是動(dòng)態(tài)權(quán)限,所以在Flutter應(yīng)用開(kāi)發(fā)中如果涉及到一些危險(xiǎn)權(quán)限,就需要進(jìn)行動(dòng)態(tài)申請(qǐng),本文就詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-09-09
  • Android測(cè)試中Appium的一些錯(cuò)誤解決技巧

    Android測(cè)試中Appium的一些錯(cuò)誤解決技巧

    今天小編就為大家分享一篇關(guān)于Android測(cè)試中Appium的一些錯(cuò)誤解決技巧的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • Android?Hilt?Retrofit?Paging3使用實(shí)例

    Android?Hilt?Retrofit?Paging3使用實(shí)例

    這篇文章主要介紹了Android?Hilt依賴注入的使用,首先,某個(gè)類的成員變量稱為依賴,如若此變量想要實(shí)例化引用其類的方法,可以通過(guò)構(gòu)造函數(shù)傳參或者通過(guò)某個(gè)方法獲取對(duì)象,此等通過(guò)外部方法獲取對(duì)象實(shí)例的稱為依賴注入
    2023-01-01
  • android WebView加載html5介紹

    android WebView加載html5介紹

    viewport屬性放在HTML的meta中接下來(lái)看詳細(xì)代碼,感興趣的你可以參考下本文
    2013-03-03
  • Android webview 遇到android.os.FileUriExposedException錯(cuò)誤解決辦法

    Android webview 遇到android.os.FileUriExposedException錯(cuò)誤解決辦法

    這篇文章主要介紹了Android webview 遇到android.os.FileUriExposedException錯(cuò)誤解決辦法的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家遇到這樣的問(wèn)題解決,需要的朋友可以參考下
    2017-10-10
  • Android調(diào)試神器stetho使用詳解和改造

    Android調(diào)試神器stetho使用詳解和改造

    今天小編就為大家分享一篇關(guān)于Android調(diào)試神器stetho使用詳解和改造,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • Android仿美團(tuán)外賣菜單界面

    Android仿美團(tuán)外賣菜單界面

    這篇文章主要為大家詳細(xì)介紹了Android仿美團(tuán)外賣菜單界面,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • Android自定義控件ImageView實(shí)現(xiàn)點(diǎn)擊之后出現(xiàn)陰影效果

    Android自定義控件ImageView實(shí)現(xiàn)點(diǎn)擊之后出現(xiàn)陰影效果

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件ImageView實(shí)現(xiàn)點(diǎn)擊之后有陰影效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android封裝高德地圖定位工具類Util的詳細(xì)步驟

    Android封裝高德地圖定位工具類Util的詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于Android封裝高德地圖定位工具類Util的相關(guān)資料,封裝成工具類后非常方便以后的項(xiàng)目,可以直接使用,文中也給出了詳細(xì)的實(shí)例代碼,需要的朋友可以參考下
    2021-07-07

最新評(píng)論