使用putSerializable将对象传递给活动

时间:2012-04-07 19:23:31

标签: android bundle android-activity

我正在尝试使用此代码将dbhelper实例从一个活动传递到另一个活动

    private void onCategoriesClick() {
        private DbAdapter db;
        db = new DbAdapter(this); 
        Intent i = new Intent(this, CategoriesActivity.class);
        Bundle b = i.getExtras();
        b.putSerializable("db", db); //geting NullPointerException here
        startActivityForResult(i, 0);    

DbAdapter类实现Serializable

我很困惑,任何人都可以指出我的错误吗?

2 个答案:

答案 0 :(得分:3)

在将使用它的活动中创建dbhelper。如果你真的必须在活动之间传递它,那么将它存储在一个静态变量(在你的应用程序类中以便于访问)会更加简单。

答案 1 :(得分:1)

getExtras()返回null,因为在调用它之前没有将任何额外内容放入Intent中。这意味着b == null,因此是NPE。只需将序列化直接放在intent中即可。

i.putExtra("db", (Serializable) db);

但是,一般情况下,如果可以提供帮助,请避免将序列化项传递给意图。