这里写了4中存储方式,本来按道理来说,是5种的,但是第五种网络存储,现在网络学的不怎么好,所以等下次再补上,现将前四种贴出来,供大家参考
资源下载地址:http://download.csdn.net/detail/fmx520/9592510
* 1 使用SharedPreferences存储数据
*
* 2 文件存储数据
*
* 3 SQLite数据库存储数据
*
* 4 使用ContentProvider存储数据
*
* 5 网络存储数据
一.使用SharedPreferences存储数据
package fragment;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.fmx.demo.R;
public class Fragment1 extends Fragment implements OnClickListener {
private TextView text1;
private EditText edit1;
private Button btn1Edit1, btn2Edit1;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
private static final String TAG = "Fragment1";
@Override
@Nullable
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.fragment_xml1, container,
false);
initViews(rootView);
initData();
return rootView;
}
private void initData() {
// TODO Auto-generated method stub
sharedPreferences = getActivity().getSharedPreferences(TAG,
Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
private void initViews(View rootView) {
// TODO Auto-generated method stub
text1 = (TextView) rootView.findViewById(R.id.text_1);
edit1 = (EditText) rootView.findViewById(R.id.edit_1);
btn1Edit1 = (Button) rootView.findViewById(R.id.btn1_edit_1);
btn2Edit1 = (Button) rootView.findViewById(R.id.btn2_edit_1);
btn1Edit1.setOnClickListener(this);
btn2Edit1.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int code = v.getId();
switch (code) {
case R.id.btn1_edit_1:
String text11 = edit1.getText().toString();
if (!text11.equals("")) {
editor.putString("text", text11);
editor.commit();
showToast("已经保存");
} else {
showToast("没有内容");
}
break;
case R.id.btn2_edit_1:
String text12 = sharedPreferences.getString("text",
"为保存过数据或者保存的数据是null");
text1.setText(text12);
editor.clear();
editor.commit();
showToast("内容已经读取,数据删除");
break;
}
}
protected void showToast(String msg) {
Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
}
}
二.文件存储数据
package fragment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Scanner;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.fmx.demo.R;
public class Fragment2 extends Fragment implements OnClickListener {
private TextView text2;
private EditText edit2;
private Button btn1Edit2, btn2Edit2;
private static final String FILENAME = "demo.txt";
private static final String DIR = "demo";
@Override
@Nullable
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.fragment_xml2, container,
false);
initViews(rootView);
return rootView;
}
private void initViews(View rootView) {
// TODO Auto-generated method stub
text2 = (TextView) rootView.findViewById(R.id.text_2);
edit2 = (EditText) rootView.findViewById(R.id.edit_2);
btn1Edit2 = (Button) rootView.findViewById(R.id.btn1_edit_2);
btn2Edit2 = (Button) rootView.findViewById(R.id.btn2_edit_2);
btn1Edit2.setOnClickListener(this);
btn2Edit2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int code = v.getId();
switch (code) {
case R.id.btn1_edit_2:
write(edit2.getText().toString());
break;
case R.id.btn2_edit_2:
text2.setText(read());
break;
}
}
protected void showToast(String msg) {
Toast.makeText(getActivity(), msg, Toast.LENGTH_SHORT).show();
}
// 文件写操作函数
private void write(String content) {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = new File(Environment.getExternalStorageDirectory()
.toString()
+ File.separator
+ DIR
+ File.separator
+ FILENAME);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
PrintStream out = null;
try {
out = new PrintStream(new FileOutputStream(file, true));
out.println(content);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close();
}
}
} else {
showToast("保存失败,SD卡不存在!");
}
}
// 文件读操作函数
private String read() {
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File file = new File(Environment.getExternalStorageDirectory()
.toString()
+ File.separator
+ DIR
+ File.separator
+ FILENAME);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
Scanner scan = null;
StringBuilder sb = new StringBuilder();
try {
scan = new Scanner(new FileInputStream(file));
while (scan.hasNext()) {
sb.append(scan.next() + "\n");
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (scan != null) {
scan.close();
}
}
} else {
showToast("读取失败,SD卡不存在!");
}
return null;
}
}
三.数据库存储
package fragment;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import com.fmx.demo.ListAdapter;
import com.fmx.demo.ListData;
import com.fmx.demo.R;
import com.fmx.demo.SQliteDB;
public class Fragment3 extends Fragment implements OnClickListener {
private EditText edit13, edit23, edit33, edit43;
private Button btn13, btn23, btn33, btn43;
private ListView list3;
private List<ListData> list;
private ListAdapter adapter;
private SQliteDB db;
@Override
@Nullable
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.fragment_xml3, container,
false);
initViews(rootView);
return rootView;
}
private void initViews(View rootView) {
// TODO Auto-generated method stub
edit13 = (EditText) rootView.findViewById(R.id.edit1_3);
edit23 = (EditText) rootView.findViewById(R.id.edit2_3);
edit33 = (EditText) rootView.findViewById(R.id.edit3_3);
edit43 = (EditText) rootView.findViewById(R.id.edit4_3);
btn13 = (Button) rootView.findViewById(R.id.btn1_3);
btn23 = (Button) rootView.findViewById(R.id.btn2_3);
btn33 = (Button) rootView.findViewById(R.id.btn3_3);
btn43 = (Button) rootView.findViewById(R.id.btn4_3);
btn13.setOnClickListener(this);
btn23.setOnClickListener(this);
btn33.setOnClickListener(this);
btn43.setOnClickListener(this);
list3 = (ListView) rootView.findViewById(R.id.list3);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int code = v.getId();
switch (code) {
case R.id.btn1_3:// 创建
setDataBase();
insert2DB();
break;
case R.id.btn2_3:// 查找
setDataBase();
query2DB();
break;
case R.id.btn3_3:// 修改
setDataBase();
update2DB();
break;
case R.id.btn4_3:// 删除
delete2DB();
break;
}
}
private void delete2DB() {
// TODO Auto-generated method stub
SQLiteDatabase dataBase = db.getWritableDatabase();
if (!edit13.getText().toString().equals(" ")) {
dataBase.delete("users", "name=?", new String[] { edit13.getText()
.toString() });
db.close();
dataBase.close();
Toast.makeText(getActivity(), "删除完成", Toast.LENGTH_SHORT).show();
clean2EditText();
} else {
Toast.makeText(getActivity(), "输入姓名以删除", Toast.LENGTH_SHORT).show();
}
}
private void update2DB() {
// TODO Auto-generated method stub
SQLiteDatabase dataBase = db.getWritableDatabase();
ContentValues values = new ContentValues();
if (!edit13.getText().toString().equals(" ")) {
values.put("name", edit13.getText().toString());
values.put("age", edit23.getText().toString());
values.put("phone", edit33.getText().toString());
values.put("address", edit43.getText().toString());
dataBase.update("users", values, "name=?", new String[] { edit13
.getText().toString() });
dataBase.close();
db.close();
Toast.makeText(getActivity(), "信息已更新", Toast.LENGTH_SHORT).show();
clean2EditText();
} else {
Toast.makeText(getActivity(), "第一行姓名不可为空", Toast.LENGTH_SHORT)
.show();
}
}
protected void setDataBase() {
db = new SQliteDB(getActivity());
}
protected void query2DB() {
SQLiteDatabase dataBase = db.getWritableDatabase();
Cursor cursor = dataBase.query("users", null, null, null, null, null,
null);
cursor.moveToFirst();
list = new ArrayList<ListData>();
ListData dataTitle = new ListData("姓名", "年龄", "电话", "住址");
list.add(dataTitle);
do {
String name = cursor.getString(0);
String age = cursor.getString(1);
String phone = cursor.getString(2);
String address = cursor.getString(3);
Log.i("Fragment3", name + "---" + age + "---" + phone + "---"
+ address);
ListData data = new ListData(name, age, phone, address);
list.add(data);
} while (cursor.moveToNext());
adapter = new ListAdapter(getActivity(), list);
list3.setAdapter(adapter);
dataBase.close();
db.close();
}
protected void insert2DB() {
if (!edit13.getText().toString().equals(" ")
|| !edit23.getText().toString().equals(" ")
|| !edit33.getText().toString().equals(" ")
|| !edit43.getText().toString().equals(" ")) {
SQLiteDatabase dataBase = db.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", edit13.getText().toString());
values.put("age", edit23.getText().toString());
values.put("phone", edit33.getText().toString());
values.put("address", edit43.getText().toString());
dataBase.insert("users", null, values);
dataBase.close();
db.close();
Toast.makeText(getActivity(), "添加数据成功", Toast.LENGTH_SHORT).show();
clean2EditText();
} else {
Toast.makeText(getActivity(), "不要留空白", Toast.LENGTH_SHORT).show();
}
}
protected void clean2EditText() {
edit13.setText(" ");
edit23.setText(" ");
edit33.setText(" ");
edit43.setText(" ");
}
}
然后是DBHelper
package com.fmx.demo;
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
public class SQliteDB extends SQLiteOpenHelper {
private static final String DB_NAME = "demo";
private static final String CREATE_TABLE = "create table users(name char(20) primary key,age char(5),phone char(15),address char(30))";
private static final int VERSION = 1;
public SQliteDB(Context context, String name, CursorFactory factory,
int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
// TODO Auto-generated constructor stub
}
public SQliteDB(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version, null);
// TODO Auto-generated constructor stub
}
public SQliteDB(Context context) {
super(context, DB_NAME, null, VERSION, null);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
在这里,因为有查询数据,显示为表格的形式,所以就使用ListView的形式来显示,所以就把Adapter也贴出来
package com.fmx.demo;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class ListAdapter extends BaseAdapter {
private Context context;
private List<ListData> list;
public ListAdapter(Context context, List<ListData> list) {
// TODO Auto-generated constructor stub
this.context = context;
this.list = list;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(
R.layout.list_item, null);
viewHolder = new ViewHolder();
viewHolder.nameItem = (TextView) convertView
.findViewById(R.id.name_item);
viewHolder.ageItem = (TextView) convertView
.findViewById(R.id.age_item);
viewHolder.phoneItem = (TextView) convertView
.findViewById(R.id.phone_item);
viewHolder.addressItem = (TextView) convertView
.findViewById(R.id.address_item);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
viewHolder.nameItem.setText(list.get(position).getName());
viewHolder.ageItem.setText(list.get(position).getAge());
viewHolder.phoneItem.setText(list.get(position).getPhone());
viewHolder.addressItem.setText(list.get(position).getAddress());
return convertView;
}
class ViewHolder {
TextView nameItem;
TextView ageItem;
TextView phoneItem;
TextView addressItem;
}
}
四.ContentProvider
这里仅仅是写了个读取短信的功能,并没写对外使用的uri,所以。。。可以参考学习下
package fragment;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import android.content.ContentResolver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.fmx.demo.R;
import com.fmx.demo.SMSAdapter;
import com.fmx.demo.SMSData;
public class Fragment4 extends Fragment {
private ListView list4;
private List<SMSData> list;
private SMSAdapter smsAdapter;
/**
* 通讯录是:“./data/data/com.android.providers.contacts/databases/contacts2.db”
* 短信是:“./data/data/com.android.providers.telephony/databases/mmssms.db”
*/
@Override
@Nullable
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View rootView = inflater.inflate(R.layout.fragment_xml4, container,
false);
initViews(rootView);
initData();
return rootView;
}
private void initData() {
// TODO Auto-generated method stub
Uri uri = Uri.parse("content://sms/");
ContentResolver resolver = getActivity().getContentResolver();
Cursor cursor = resolver.query(uri, new String[] { "address", "body",
"date" }, null, null, null);
cursor.moveToFirst();
list = new ArrayList<SMSData>();
do {
String address = cursor.getString(0);// 手机号码
String body = cursor.getString(1); // 短信内容
String date = cursor.getString(2);// 日期
Log.i("Fragment4", address + "----" + body + "----"
+ string2Data(date));
SMSData smsData = new SMSData("from:" + address, body,
string2Data(date));
list.add(smsData);
} while (cursor.moveToNext());
smsAdapter = new SMSAdapter(getActivity(), list);
list4.setAdapter(smsAdapter);
}
private void initViews(View rootView) {
// TODO Auto-generated method stub
list4 = (ListView) rootView.findViewById(R.id.list4);
}
protected String string2Data(String date) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Timestamp time = new Timestamp(Long.parseLong(date));
return simpleDateFormat.format(time);
}
}
这里也是使用了ListView和上一个基本一样,所以不再赘述
下午更新了下ContentProvider,使用了数据库存储中的 数据库 ,对外使用ContentProvider,首先新建class ContentProviderTest extends ContentProvider ,然后在manifest里面注册
<provider
android:name="com.fmx.demo.ContentProviderTest"
android:authorities="com.fmx.demo.demo" >
</provider>
这两部操作完毕以后,丰富下
ContentProviderTest 类
package com.fmx.demo;
import android.content.ContentProvider;
import android.content.ContentValues;
import android.content.Context;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
public class ContentProviderTest extends ContentProvider {
private static final String TAG = "ContentProviderTest";
private static final String PROVIDER_URI = "com.fmx.demo.demo";
private static final Uri USERS = Uri.parse("content://" + PROVIDER_URI
+ "/users");
private static final int USERS_CODE = 0;
private static final UriMatcher mUriMatcher = new UriMatcher(
UriMatcher.NO_MATCH);
static {
mUriMatcher.addURI(PROVIDER_URI, "users", USERS_CODE);// 关联Uri和Uri_Code
}
private SQLiteDatabase sqLiteDatabase;
private SQliteDB db;
private Context context;
protected String backDbTableName(Uri uri) {
String name = null;
switch (mUriMatcher.match(uri)) {
case USERS_CODE:
name = "users";
break;
}
return name;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
String tableName = backDbTableName(uri);
db = new SQliteDB(context);
sqLiteDatabase = db.getReadableDatabase();
return sqLiteDatabase.delete(tableName, selection, selectionArgs);
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
String tableName = backDbTableName(uri);
db = new SQliteDB(context);
sqLiteDatabase = db.getReadableDatabase();
sqLiteDatabase.insert(tableName, null, values);
context.getContentResolver().notifyChange(uri, null);
return uri;
}
@Override
public boolean onCreate() {
// TODO Auto-generated method stub
context = getContext();
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO Auto-generated method stub
String tableName = backDbTableName(uri);
db = new SQliteDB(context);
sqLiteDatabase = db.getReadableDatabase();
return sqLiteDatabase.query(tableName, projection, selection,
selectionArgs, null, null, sortOrder);
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
String tableName = backDbTableName(uri);
db = new SQliteDB(context);
sqLiteDatabase = db.getReadableDatabase();
return sqLiteDatabase.update(tableName, values, selection,
selectionArgs);
}
}
然后测试
import java.util.ArrayList;
import java.util.List;
import com.fmx.demo.ListAdapter;
import com.fmx.demo.ListData;
import com.fmx.demo.R;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class ContectTest extends Activity implements OnClickListener {
private EditText edit13, edit23, edit33, edit43;
private Button btn13, btn23, btn33, btn43;
private ListView list3;
private List<ListData> list;
private ListAdapter adapter;
private Uri uri = Uri.parse("content://com.fmx.demo.demo/users");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_xml3);
initView();
}
private void initView() {
// TODO Auto-generated method stub
edit13 = (EditText) findViewById(R.id.edit1_3);
edit23 = (EditText) findViewById(R.id.edit2_3);
edit33 = (EditText) findViewById(R.id.edit3_3);
edit43 = (EditText) findViewById(R.id.edit4_3);
btn13 = (Button) findViewById(R.id.btn1_3);
btn23 = (Button) findViewById(R.id.btn2_3);
btn33 = (Button) findViewById(R.id.btn3_3);
btn43 = (Button) findViewById(R.id.btn4_3);
btn13.setOnClickListener(this);
btn23.setOnClickListener(this);
btn33.setOnClickListener(this);
btn43.setOnClickListener(this);
list3 = (ListView) findViewById(R.id.list3);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
int code = v.getId();
switch (code) {
case R.id.btn1_3:// 创建
insert();
break;
case R.id.btn2_3:// 查找
query();
break;
case R.id.btn3_3:// 修改
update();
break;
case R.id.btn4_3:// 删除
delete();
break;
}
}
private void delete() {
// TODO Auto-generated method stub
ContentResolver resolver = getContentResolver();
if (!edit13.getText().toString().equals(" ")) {
resolver.delete(uri, "name=?", new String[] { edit13.getText()
.toString() });
} else {
showToast("请输入姓名");
}
}
private void update() {
// TODO Auto-generated method stub
ContentResolver resolver = getContentResolver();
if (!edit13.getText().toString().equals(" ")) {
ContentValues values = new ContentValues();
values.put("age", edit23.getText().toString());
values.put("phone", edit33.getText().toString());
values.put("address", edit43.getText().toString());
resolver.update(uri, values, "name=?", new String[] { edit13
.getText().toString() });
clean2EditText();
showToast("修改完毕,请查看");
} else {
showToast("请输入姓名");
}
}
private void query() {
// TODO Auto-generated method stub
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(uri, null, null, null, null);
cursor.moveToFirst();
list = new ArrayList<ListData>();
ListData dataTitle = new ListData("姓名", "年龄", "电话", "住址");
list.add(dataTitle);
do {
String name = cursor.getString(0);
String age = cursor.getString(1);
String phone = cursor.getString(2);
String address = cursor.getString(3);
Log.i("ContectTest", name + "---" + age + "---" + phone + "---"
+ address);
ListData data = new ListData(name, age, phone, address);
list.add(data);
} while (cursor.moveToNext());
adapter = new ListAdapter(ContectTest.this, list);
list3.setAdapter(adapter);
}
private void insert() {
// TODO Auto-generated method stub
ContentResolver resolver = getContentResolver();
if (!edit13.getText().toString().equals(" ")
|| !edit23.getText().toString().equals(" ")
|| !edit33.getText().toString().equals(" ")
|| !edit43.getText().toString().equals(" ")) {
ContentValues values = new ContentValues();
values.put("name", edit13.getText().toString());
values.put("age", edit23.getText().toString());
values.put("phone", edit33.getText().toString());
values.put("address", edit43.getText().toString());
resolver.insert(uri, values);
clean2EditText();
showToast("插入新数据完毕,请查看");
} else {
showToast("请输入完整的信息");
}
}
private void showToast(String msg) {
Toast.makeText(ContectTest.this, msg, Toast.LENGTH_SHORT).show();
}
protected void clean2EditText() {
edit13.setText(" ");
edit23.setText(" ");
edit33.setText(" ");
edit43.setText(" ");
}
}
五.网络存储
无