当前位置: 首页 > news >正文

Android实训九 数据存储和访问

实训9  数据存储和访问

一、【实训目的】

1、 SharedPreferences存储数据;

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

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

二、【实训内容】

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

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

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

具体步骤:

MainActivity源文件:

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";@Overrideprotected 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 blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.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 blocke.printStackTrace();}} catch (FileNotFoundException ex) {ex.printStackTrace();}}@Overridepublic 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源代码:

<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><EditTextandroid:id="@+id/writecontent"android:layout_width="0dp"					android:layout_height="wrap_content"android:layout_weight="1.0"				android:hint="输入你想写入的内容" /></TableRow>><TableRow>		<Buttonandroid:id="@+id/btnwritexml"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="0"		android:text="写入xml文件" /></TableRow><TableRow><EditTextandroid:id="@+id/readcontent"android:layout_width="0dp"					android:layout_height="wrap_content"/></TableRow>><TableRow>		<Buttonandroid:id="@+id/btnreadxml"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="0"		android:text="读取内容" /></TableRow><TableRow>		<Buttonandroid:id="@+id/btnwritetxt"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="0"		android:text="写入login.txt文件" /></TableRow><TableRow>		<Buttonandroid:id="@+id/btnwritesql"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_column="0"		android:text="写入数据库" /></TableRow>
</TableLayout>   

运行结果截图:

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

http://www.lryc.cn/news/528108.html

相关文章:

  • 实验一---典型环节及其阶跃响应---自动控制原理实验课
  • SOME/IP--协议英文原文讲解2
  • matlab中,fill命令用法
  • 【Linux】Linux C判断两个IPv6地址是否有包含关系
  • 【玩转全栈】----Django基本配置和介绍
  • mysql 学习6 DML语句,对数据库中的表进行 增 删 改 操作
  • 自动化运维在云环境中的完整实践指南
  • 一分钟搭建promehteus+grafana+alertmanager监控平台
  • 【10.2】队列-设计循环队列
  • 设置jmeter界面图标字体大小
  • Xposed-Hook
  • 设计模式Python版 原型模式
  • QT:图像上绘制图形
  • GPU上没程序在跑但是显存被占用
  • wordpress代码结构解析
  • 【Unity3D】实现2D小地图效果
  • 关联传播和 Python 和 Scikit-learn 实现
  • https数字签名手动验签
  • LeetCode:62.不同路径
  • 如果我想设计一款复古风格的壁纸,应该选什么颜色?
  • 【数据结构】树的基本:结点、度、高度与计算
  • 【Pytest】生成html报告中,中文乱码问题解决方案
  • week08_文本匹配任务
  • JUC--ConcurrentHashMap底层原理
  • 【2024年华为OD机试】(C卷,200分)- 推荐多样性 (JavaScriptJava PythonC/C++)
  • 【教学类-89-01】20250127新年篇01—— 蛇年红包(WORD模版)
  • [权限提升] 操作系统权限介绍
  • DeepSeek异军突起,重塑AI格局
  • git的理解与使用
  • Baklib打造内容中台新模式助力企业智能化升级