<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/main_et_name"
android:hint="你的用户名"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/main_et_password"
android:hint="你的密码"
/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/main_et_age"
android:hint="你的年龄"
/>
<Button
android:onClick="save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="保存数据" />
<Button
android:onClick="read"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="读取数据" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="数据"
android:id="@+id/main_tv"
/>
</LinearLayout>
package com.example.lesson18_serializable;
import java.io.Serializable;
/**
*属性类,用来存储数据,继承接口Serializable,但是什么方法都不用重写!
*/
public class People implements Serializable{
//定义基本信息
String name;
String password;
int age;
//无参构造方法
public People() {
super();
}
//有参构造方法,方便数据写入
public People(String name, String password, int age) {
super();
this.name = name;
this.password = password;
this.age = age;
}
//重写toString方法,方便显示
@Override
public String toString() {
return "People [name=" + name + ", password=" + password + ", age="
+ age ;
}
}
package com.example.lesson18_serializable;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends Activity {
//保存文件的路径
String path=Environment.getExternalStorageDirectory().getAbsolutePath()+"/people.txt";
//定义布局内的控件
EditText edit_name;
EditText edit_password;
EditText edit_age;
TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//实例化布局控件
edit_name=(EditText) findViewById(R.id.main_et_name);
edit_password=(EditText) findViewById(R.id.main_et_password);
edit_age=(EditText) findViewById(R.id.main_et_age);
text=(TextView) findViewById(R.id.main_tv);
}
//保存数据
public void save(View view){
ObjectOutputStream fos=null;
try {
//如果文件不存在就创建文件
File file=new File(path);
//file.createNewFile();
//获取输出流
//这里如果文件不存在会创建文件,这是写文件和读文件不同的地方
fos=new ObjectOutputStream(new FileOutputStream(file));
//获取输入框内的文件进行写入
String name=edit_name.getText().toString();
String password=edit_password.getText().toString();
int age=Integer.parseInt(edit_age.getText().toString());
People people=new People(name, password, age);
//这里不能再用普通的write的方法了
//要使用writeObject
fos.writeObject(people);;
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if (fos!=null) {
fos.close();
}
} catch (IOException e) {
}
}
}
//读取数据
public void read(View view){
ObjectInputStream ois=null;
try {
Log.e("TAG", new File(path).getAbsolutePath()+"<---");
//获取输入流
ois=new ObjectInputStream(new FileInputStream(new File(path)));
//获取文件中的数据
Object people=ois.readObject();
//把数据显示在TextView中
text.setText(people.toString());
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
if (ois!=null) {
ois.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
package com.example.lesson18_parcalable;
import android.os.Parcel;
import android.os.Parcelable;
/**
*属性类,继承Parcelable
*实现两个方法,在其中一个方法内实现对象写入的操作
*创建一个接口类CREATOR,重写读取对象的方法
*/
public class User implements Parcelable{
//User的各种数据的定义
String name;
String password;
int age;
double money;
boolean isAdmin;
public User(){}
//写一个构造方法来方便写入数据
public User(String name, String password, int age, double money,
boolean isAdmin) {
super();
this.name = name;
this.password = password;
this.age = age;
this.money = money;
this.isAdmin = isAdmin;
}
@Override
// 这个方法没什么用
public int describeContents() {
return 0;
}
@Override
// 写数据的底层实现
public void writeToParcel(Parcel arg0, int arg1) {
arg0.writeString(name);
arg0.writeString(password);
arg0.writeInt(age);
arg0.writeDouble(money);
//把布尔类型的数据做处理,true1,false0
arg0.writeInt(isAdmin?1:0);
}
//实例化静态内部对象CREATOR实现接口,CREATOR名字不能改变,否则会报错
public static Creator CREATOR=new Creator<User>() {
@Override
// 读书数据的底层实现,要和写入的数据的顺序保持一致
public User createFromParcel(Parcel arg0) {
User user=new User();
user.name=arg0.readString();
user.password=arg0.readString();
user.age=arg0.readInt();
user.money=arg0.readDouble();
//布尔类型的数据要处理
user.isAdmin=arg0.readInt()==1?true:false;
return user;
}
@Override
public User[] newArray(int arg0) {
//返回
return new User[arg0];
}
};
//从toString方法
@Override
public String toString() {
return "User [name=" + name + ", password=" + password + ", age=" + age
+ ", money=" + money + ", isAdmin=" + isAdmin + "]";
}
}
package com.example.lesson18_parcalable;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button=new Button(this);
button.setText("跳转到B页面");
setContentView(button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
//跳转到另一个页面,对象的数据也要传递过去
Intent intent=new Intent(MainActivity.this,OtherActivity.class);
//定义数据
User user=new User("liwenzhi","123456",22,1000000,true);
//把数据放到Intent对象里面
intent.putExtra("user", user);
//实现页面跳转
startActivity(intent);
}
});
}
}
package com.example.lesson18_parcalable;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class OtherActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView textView=new TextView(this);
textView.setTextSize(30);
//获取传递过来的数据
User user=getIntent().getParcelableExtra("user");
textView.setText(user.toString());
setContentView(textView);
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有