Android实训九 数据存储和访问

实训9 数据存储和访问

一、【实训目的】

1、 SharedPreferences存储数据;

2、 借助Java的I/O体系实现文件的存储,

3、使用Android内置的轻量级数据库SQLite存储数据;

二、【实训内容】

1、实现下图所示的界面,实现以下功能:

1)用SharedPreferences类,当点击"写入xml文件"按钮, 把"输入你想写入内容"控件中的数据写入到login.xml文件中;

2)用SharedPreferences类,当点击"读取内容"按钮, 把login.xml文件中的数据读到到一个TextView中,并显示内容;

具体步骤:

MainActivity源文件:

java 复制代码
package com.example.hahah;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {
	private Button write, read;
	private EditText writeText, readText;
	private String fileName = "context.txt";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        write = (Button) findViewById(R.id.btnwritexml);
		read = (Button) findViewById(R.id.btnreadxml);
		writeText = (EditText) findViewById(R.id.writecontent);
		readText = (EditText) findViewById(R.id.readcontent);
		write.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				write(writeText.getText().toString());
			}
		});
		read.setOnClickListener(new OnClickListener() {
			public void onClick(View arg0) {
				readText.setText(read());
			}
		});

    }

    public String read() {
		StringBuilder sbBuilder = new StringBuilder("");
		byte[] buffer = new byte[64];
		int hasRead;
		try {
			FileInputStream fis = openFileInput(fileName);
			while ((hasRead = fis.read(buffer)) != -1) {
				sbBuilder.append(new String(buffer, 0, hasRead));
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return sbBuilder.toString();

	}

	public void write(String str) {

		try {
			FileOutputStream fos = openFileOutput(fileName, Context.MODE_APPEND);
			PrintStream ps = new PrintStream(fos);
			ps.print(str);
			ps.close();
			try {
				fos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (FileNotFoundException ex) {
			ex.printStackTrace();
		}
	}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

Activity_main源代码:

java 复制代码
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:stretchColumns="2">
    
    <TableRow>
        <EditText
            android:id="@+id/writecontent"
            android:layout_width="0dp"					
            android:layout_height="wrap_content"
            android:layout_weight="1.0"				
            android:hint="输入你想写入的内容" />
    </TableRow>>
    
    <TableRow>		
         <Button
            android:id="@+id/btnwritexml"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"		
            android:text="写入xml文件" />
    </TableRow>
    
    <TableRow>
        <EditText
            android:id="@+id/readcontent"
            android:layout_width="0dp"					
            android:layout_height="wrap_content"/>
    </TableRow>>
    
    <TableRow>		
         <Button
            android:id="@+id/btnreadxml"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"		
            android:text="读取内容" />
    </TableRow>
    
    <TableRow>		
         <Button
            android:id="@+id/btnwritetxt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"		
            android:text="写入login.txt文件" />
    </TableRow>
    
    <TableRow>		
         <Button
            android:id="@+id/btnwritesql"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"		
            android:text="写入数据库" />
    </TableRow>
</TableLayout>   

运行结果截图:

附注:该专栏是博主上学时的实训项目,可供访客练习与参考。代码质量不是很好,但能实现,仅供参考!

相关推荐
jjinl14 分钟前
Android 资源说明
android
恋猫de小郭2 小时前
Swift 6.3 正式发布支持 Android ,它能在跨平台发挥什么优势?
android·前端·flutter
一只会跑会跳会发疯的猴子2 小时前
php操作ssl,亲测可用
android·php·ssl
程序员码歌3 小时前
火爆了,一个Skill搞定AI热点自动化:RSS 聚合 + AI 筛选 + 公众号 + 邮件全流程
android·前端·ai编程
优选资源分享3 小时前
小白转文字 v1.2.8.0 | 安卓离线免费音视频转写工具
android·音视频
安卓机器3 小时前
安卓玩机自做小工具------用于ROM修改 安卓设备联机应用扫描工具 查看应用中文名称 包名 应用路径等
android·修改rom·定制rom·修改系统应用
梦里花开知多少3 小时前
深入理解Android binder线程模型
android·架构
千里马学框架4 小时前
aospc/c++的native 模块VScode和Clion
android·开发语言·c++·vscode·安卓framework开发·clion·车载开发
洞见不一样的自己4 小时前
深度解析Kotlin泛型:从基础到实战
android
luanma1509804 小时前
Laravel3.x:PHP框架的里程碑
android