我正在尝试实现简单的数据库CRUD操作,在UPDATE操作的情况下,用户移动到另一个屏幕,在那里他输入他想要更新的列的新旧值,所以在移动到下一个活动时我想传递数据库的对象在MainActivity中创建的类到UpdateActivity,我通过实现Database类Serializbale尝试了它,但它崩溃了.
java.lang.RuntimeException: Parcelable encountered IOException reading a Serializable object
Run Code Online (Sandbox Code Playgroud)
这是我试过的代码
主要活动
MyDbHandler dbObj = new MyDBHandler(this, null, null, 1);
public void updateBtnClicked(View view)
{
Intent intent = new Intent(MainActivity.this, ActivityUpdate.class);
intent.putExtra("Object", dbObj);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
ActivityUpdate
intent = getIntent();
dbObj2 = (MyDBHandler) intent.getSerializableExtra("Object");
public void doneButtonClicked(View view)
{
String str1 = newValue.getText().toString();
String str2 = oldValue.getText().toString();
dbObj2.updateProduct(str1, str2);
finish();
}
Run Code Online (Sandbox Code Playgroud)
那么数据库类对象如何从一个活动传递到另一个活动呢?谢谢
数据库类对象如何从一个活动传递到另一个活动
您不序列化数据库对象。你再次请求他们。
MyDbHandler dbHandler = new MyDbHandler(MainActivity.this); // pass your Activity here
dbHandler.update(new Foo(42));
Run Code Online (Sandbox Code Playgroud)
像这样写的MyDbHandler一些扩展在哪里SQLiteOpenHelper
public class MyDbHandler extends SQLiteOpenHelper {
// Database Info
private static final String DATABASE_NAME = "DatabaseName";
private static final int DATABASE_VERSION = 1;
public MyDbHandler(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
if (oldVersion != newVersion) {
// TODO
}
/**
* Update method defined here
**/
public void update(Foo bar) {
SQLiteDatabase db = getWritableDatabase();
// TODO: Write to & close the database
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1217 次 |
| 最近记录: |