平安夜晚上我们自学了简单的SharedPreferences存储,今天课上老师又讲了一遍,我们又学了一招,跨Activity存取数据。不过我们把前面的几种存储这样系统学过来就觉得这个也不是很难嘛,可以接受。
我们两个Activity那么就有两个布局文件,一个用来保存和获取数据,一个用来取别人的数据。
activity_main.xml(和前面几篇数据存储的一样)
<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:orientation="vertical"
tools:context="com.example.datasave.MainActivity" >
<EditText
android:id="@+id/main_et_writedata"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请写入数据" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="写入"
android:onClick="write"/>
<EditText
android:id="@+id/main_et_readdata"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请读取数据" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="读取"
android:onClick="read"/>
</LinearLayout>
取数据的就写一个TextView就好。
MainActivity.java
package com.example.datasave4;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import com.example.datasave.Utils.ToastUtil;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.EditText;
/**
* @author Squid
*从SD卡上读写数据
*/
public class MainActivity extends Activity {
private final String FILE_NAME = "squid4.txt";// 文件名
private EditText mEt_writeData, mEt_readData;
private SharedPreferences sp;//声明SharedPreferences对象
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEt_writeData = (EditText) findViewById(R.id.main_et_writedata);
mEt_readData = (EditText) findViewById(R.id.main_et_readdata);
}
// 写入按钮的监听
public void write(View view) {
//实例化SharedPreferences对象
/*
* 1.MODE_APPEND:追加形式
* 2.MODE_PRIVATE:只能本应用程序访问
* 3.MODE_WORLD_READABLE:其他程序进行读取
* 4.MODE_WORLD_WRITEABLE:其他程序可以进行写入
*/
String content=mEt_writeData.getText().toString();
sp=getSharedPreferences(FILE_NAME, MODE_APPEND);
Editor edit=sp.edit();
edit.putString("content", content);
/*//key值相同时覆盖,不是追加
edit.putString("content", "123");*/
edit.putString("username", "squid");
edit.putString("password", "squid");
edit.putBoolean("isLogin", false);
//同步,将数据提交到内存的同时,提交到磁盘上
edit.commit();
/*//不是同步的,先提交到内存,在提交到磁盘上
edit.apply();*/
mEt_writeData.setText("");
ToastUtil.showToast(this, "保存成功");
}
// 读取按钮的监听
public void read(View view) {
/*
* 第一个参数:key值
* 第二个参数:如果取不到key值对应的Value值则为默认值
*/
String content=sp.getString("content", "");
String contents=sp.getString("contents",""+"========");
boolean isLogin = sp.getBoolean("isLogin", false);
String info=content+contents+isLogin+"";
mEt_readData.setText(info);
ToastUtil.showToast(this, "读取成功");
}
}
TestActivity.java
package com.example.datasave4;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
/**
* @author Squid
*只能进行六大基本数据的存储
*/
public class TestActivity extends Activity {
private TextView mTv_showText;
private SharedPreferences sp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mTv_showText=(TextView)findViewById(R.id.test_tv_showText);
sp=getSharedPreferences("squid4.txt", MODE_APPEND);
String content=sp.getString("content", "");
sp.edit().putString("contents", content).commit();
mTv_showText.setText(content);
}
}
还有一个封装好的toast
package com.example.datasave.Utils;
import android.content.Context;
import android.widget.Toast;
/**
* @author Squid
*
*/
public class ToastUtil {
/**
* 显示的Toast内容
* @param context:上下文环境
* @param text:需要显示的内容
*/
public static void showToast(Context context,String text){
Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
}
}
我们想存数据的时候先用MainActivity,在manifest文件把程序的入口设置为MainActivity;想要读取数据的时候,在manifest文件把程序的入口设置为MainActivity。