将数据库类对象从主活动传递到另一个活动

she*_*hzy 6 sqlite android

我正在尝试实现简单的数据库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)

那么数据库类对象如何从一个活动传递到另一个活动呢?谢谢

cri*_*007 2

数据库类对象如何从一个活动传递到另一个活动

您不序列化数据库对象。你再次请求他们。

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)