你好我是android开发新手。 我尝试制作一个需要4个输入字段和一张照片的列表。drawable是不可序列化的异常
名单应保存在内部存储,但我得到这个错误:
java.io.notserializableexception android.graphics.drawable.bitmapdrawable;
人bean类有4个字符串变量和一个可绘制。 感谢您的帮助。
package com.example.awais_pc.savedataapp;
import android.app.Dialog; import android.content.Context; import android.graphics.drawable.Drawable; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import android.widget.Toast;
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView listview;
String fileName = "data.txt";
ArrayList personBeans ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView)findViewById(R.id.listView);
readDataInFile();
}
public void addRecord(View v){
myDialog();
}
public void myDialog(){
final ImageButton imgbtn;
final EditText name,pass,email,phone;
final Dialog dialog = new Dialog(this);
dialog.setContentView(R.layout.mydialog);
dialog.setCancelable(false);
name = (EditText)dialog.findViewById(R.id.editTextName);
pass = (EditText)dialog.findViewById(R.id.editTextPassword);
email = (EditText)dialog.findViewById(R.id.editTextEmail);
phone = (EditText)dialog.findViewById(R.id.editTextPhone);
imgbtn = (ImageButton) dialog.findViewById(R.id.imageButton);
Button save = (Button) dialog.findViewById(R.id.buttonSubmit);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nam = name.getText().toString();
String pas = pass.getText().toString();
String em = email.getText().toString();
String ph = phone.getText().toString();
Drawable dra = imgbtn.getDrawable();
personBeans.add(new PersonBean(nam,pas,em,ph,dra));
listview.setAdapter(new Mycustomlist(personBeans, MainActivity.this));
dialog.dismiss();
}
});
dialog.show();
}
private void writeDataInFile(){
try {
FileOutputStream fos = openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(personBeans);
oos.flush();
oos.close();
fos.close();
} catch (Exception e) {
Toast.makeText(MainActivity.this, ""+e, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
listview.setAdapter(new Mycustomlist(personBeans, MainActivity.this));
} // Write File
private void readDataInFile(){
try {
FileInputStream fis = openFileInput(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
personBeans = (ArrayList)ois.readObject();
} catch (Exception e) {
personBeans = new ArrayList();
Toast.makeText(MainActivity.this, ""+e, Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
listview.setAdapter(new Mycustomlist(personBeans, MainActivity.this));
}//Read File }
2016-09-12
Alex