文章目錄
- 零、學習目標
- 一、資料存盤
- 二、共享引數
- 1、共享引數概述
- 2、利用共享引數讀寫檔案步驟
- 三、案例演示——讀寫資料
- (一)運行效果
- (二)實作步驟
- 1、創建安卓應用【ReadWriteData】
- 2、將背景圖片拷貝到drawable目錄
- 3、主布局資源檔案activity_main.xml
- 3、字串資源檔案strings.xml
- 4、主界面類 - MainActivity
- 5、啟動應用,查看效果
- 6、查看保存資料的檔案
- 三、課后作業
- 任務:用戶注冊
零、學習目標
- 理解共享引數的作用與特點
- 掌握利用共享引數讀寫檔案的步驟
一、資料存盤
- 共享引數
- 檔案流操作
- SQLite應用
- XML與JSON決議
二、共享引數
1、共享引數概述
安卓提供了一種簡單的資料存盤方式SharedPreferences,這是一種輕量級的資料保存方式,用來存盤一些簡單的配置資訊,以鍵值對的方式存盤在一個XML檔案中,
2、利用共享引數讀寫檔案步驟
- 利用Activity的getPreferences(name, mode)方法得到SharedPreferences物件
- 使用SharedPreferences物件的edit()得到Editor物件
- 利用Editor物件的putXxx()方法實作資料寫入;利用SharedPreferences物件的getXxx()實作資料讀取
- 對于寫入操作,利用Editor物件的commit()方法提交資料到指定的檔案里
三、案例演示——讀寫資料
(一)運行效果

(二)實作步驟
1、創建安卓應用【ReadWriteData】


2、將背景圖片拷貝到drawable目錄

3、主布局資源檔案activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<Button
android:id="@+id/btnWriteData"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:onClick="doWriteData"
android:text="@string/write_data"
android:textSize="18sp" />
<Button
android:id="@+id/btnReadData"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:onClick="doReadData"
android:text="@string/read_data"
android:textSize="18sp" />
</LinearLayout>
3、字串資源檔案strings.xml

<resources>
<string name="app_name">共享引數演示——讀寫資料</string>
<string name="write_data">寫入資料</string>
<string name="read_data">讀取資料</string>
</resources>
4、主界面類 - MainActivity

- 宣告常量與變數

- 獲取共享引數與編輯器物件

- 撰寫寫入資料按鈕單擊事件處理方法

- 撰寫讀取檔案按鈕單擊事件處理方法

- 查看主界面類源代碼
package net.hw.read_write_data;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private static final String NAME = "person_info"; // 檔案名
private static final int MODE = Context.MODE_PRIVATE; // 訪問模式
private SharedPreferences sharedPreferences; // 共享引數
private SharedPreferences.Editor editor; // 編輯器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 利用布局資源檔案設定用戶界面
setContentView(R.layout.activity_main);
// 1. 獲取共享引數物件
sharedPreferences = getSharedPreferences(NAME, MODE);
// 2. 獲取編輯器物件
editor = sharedPreferences.edit();
}
/**
* 寫入資料按鈕單擊事件處理方法
*
* @param view
*/
public void doWriteData(View view) {
// 3. 通過編輯器寫入資料
editor.putString("name", "華衛");
editor.putString("gender", "男");
editor.putInt("age", 48);
editor.putString("hobby", "旅游、音樂、編程");
// 4. 提交資料,資料保存到指定檔案
if (editor.commit()) {
Toast.makeText(this, "恭喜,資料寫入檔案成功!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "遺憾,資料寫入檔案失敗!", Toast.LENGTH_SHORT).show();
}
}
/**
* 讀取資料按鈕單擊事件處理方法
*
* @param view
*/
public void doReadData(View view) {
// 5. 通過共享引數物件讀取檔案內容
String name = sharedPreferences.getString("name", "");
String gender = sharedPreferences.getString("gender", "");
int age = sharedPreferences.getInt("age", 0);
String hobby = sharedPreferences.getString("hobby", "");
// 6. 判斷檔案是否存在
if (name.equals("")) {
Toast.makeText(this, "溫馨提示:你還沒有寫入資料到檔案呢!", Toast.LENGTH_SHORT).show();
} else {
// 7. 創建個人資訊字串生成器
StringBuilder builder = new StringBuilder();
builder.append("姓名:" + name + "\n")
.append("性別:" + gender + "\n")
.append("年齡:" + age + "\n")
.append("愛好:" + hobby + "\n");
// 8. 獲取個人資訊字串
String personInfo = builder.toString();
// 9. 通過吐司顯示個人資訊
Toast.makeText(this, personInfo, Toast.LENGTH_SHORT).show();
}
}
}
5、啟動應用,查看效果

- 由于資料是寫入了檔案的,因此,退出應用之后再進入,依然可以讀取資料,
6、查看保存資料的檔案
- 雙擊安卓Sdk\tools里的monitor.bat,啟動DDMS


- data目錄點不開,因為沒有權限(drwxrwx–x)
- 啟動命令列,鍵入adb shell

- 切換到系統用戶(超級管理員)

- 提示:su未找到,
- 因為我們使用的虛擬機(Pixel 2 API24)是基于Google Play的,因此沒有權限,

- 基于Android 7.0 (Google APIs)創建虛擬機(Pixel 2 API 24 2)

- 在新建的虛擬機(Pixel 2 API 24 2)上啟動應用

- 在DDMS的File Explorer里找到person_info.xml檔案

- 檔案person_info.xml在data\data\net.hw.read_write_data\shared_prefs里

- 將person_info.xml檔案匯出到電腦上


- 查看person_info.xml檔案內容

- 將應用運行在基于Android 6.0(API 23)的虛擬機上

- 單擊【寫入資料】按鈕

- 單擊【讀取資料】按鈕

- 利用adb shell查看生成的檔案
adb shell
cd data/data/net.hw.read_write_data/shared_prefs
ls
cat person_info.xml

三、課后作業
任務:用戶注冊
- 創建兩個視窗:注冊視窗(包含姓名、性別、年齡和愛好資訊)、顯示注冊資訊
- 單擊注冊視窗的【注冊】按鈕,利用共享引數保存注冊資訊,并且跳轉到顯示注冊資訊視窗
- 在顯示注冊資訊視窗通過共享引數讀取各項注冊資訊并且顯示在標簽控制元件里
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/227853.html
標籤:其他
