Android开发——补充SharedPreferences存储(跨Activity存取数据)

  平安夜晚上我们自学了简单的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。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
SharedPreferencesAndroid平台用于存储轻量级数据的一种机制,它将数据存储在xml文件数据以key-value的形式存在。 以下是在Android Studio使用SharedPreferences存储数据的步骤: 1. 获取SharedPreferences对象 在Activity或Fragment获取SharedPreferences对象的方法如下: ```java SharedPreferences sharedPreferences = getSharedPreferences("my_data", Context.MODE_PRIVATE); ``` 其,"my_data"是SharedPreferences文件的名称,Context.MODE_PRIVATE表示该文件只能被当前应用程序读取和写入。 2. 存储数据 SharedPreferences提供了多种put方法来存储数据,如putString、putInt、putBoolean等。以putString为例,存储一个字符串数据的代码如下: ```java SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putString("username", "Tom"); editor.apply(); ``` 其,"username"是key,"Tom"是value,apply()方法表示提交数据,这里也可以使用commit()方法。 3. 读取数据 SharedPreferences提供了多种get方法来读取数据,如getString、getInt、getBoolean等。以getString为例,读取上面存储的字符串数据的代码如下: ```java String username = sharedPreferences.getString("username", ""); ``` 其,"username"是key,""是默认值,如果SharedPreferences文件没有该key,则返回默认值。 注意:SharedPreferences适合存储轻量级数据,如果需要存储大量数据或者复杂数据结构,建议使用SQLite数据库或者其他存储机制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游语

对你有帮助,可以请我喝杯奶哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值