2

我想将对象从一个活动转移到另一个活动。

在我的第一堂课中,我放了以下内容

意图意图;

Intent intentttt.putExtra("user_searchh", cur.toString());

这里 cur 是 Cursor 的对象。我想把它转移到二等舱。

在我的第二堂课中,我放了以下

光标 c = (Cursor) getIntent().getSerializableExtra("user_searchh");

我试图在没有上述代码的情况下运行这两个类,它工作正常。

但是,当我放置上面的代码时,它会提示强制关闭错误。

在 DDMS 中存在类似 ... NulpointerException ... DirectCursorDriver .... 等错误。

我从 如何在 Android 上将对象从一个活动传递到另一个活动中获取参考

有50票。

如果可能的话帮助我。

谢谢 ...

4

5 回答 5

1

我知道了 ....

首先,当您将对象转换为字符串时..您永远不能将其转换回对象..

其次,与其将对象从一个活动转移到另一个活动,不如将字符串从一个活动转移到第二个活动..然后在第二个活动中计算内容......

在将字符串从一个活动转移到另一个活动时,我犯了两个错误......

1)我犯的第一个错误是......

我使用两个意图对象..例如

Intent i = new Intent(user_search2.this,rest_name_share.class);

     Intent i1= new Intent();
    i1.putExtra("restaurant_email", email_of_restaurant);

     startActivity(i); 
             startActivity(i1);

而你应该像下面这样写

Intent i = new Intent(user_search2.this,rest_name_share.class);

    i.putExtra("restaurant_email", email_of_restaurant);  // here email_of_restaurant is a String object ..
    // you can aslo put more  than one strings...
     startActivity(i); 

2)第二个错误是我在类级别调用 getStringExtra() 。

它应该在 onCreate() 方法中调用

在 onCreate() 中调用的东西是

意图意图 = getIntent();

字符串 email_of_restaurant = intent.getStringExtra("restaurant_detail");

谢谢大家 ,,....

于 2012-04-16T12:57:43.200 回答
1

这不是 Serializable 的工作方式,您是对的,从根本上讲,对象被转换为字符串,但它比仅调用 obj.toString(); 复杂得多。

您可以通过 Intent 传递的唯一对象是实现Serializable 接口的对象。

因此,如果 Cursor 中有您需要传递的信息,请将其取出并将其包装在某种 Serializable 对象中。

于 2014-03-05T04:59:39.597 回答
0

我的天啊。这是一个相当小的灾区问题,是吧?

OP 的问题很简单:他将 String 放入 Intent,然后尝试检索 Serializable。当然,String 是可序列化的,但转换为 Cursor 是行不通的。

如果要尝试提供帮助,而不是仅仅正确,可以指出,一般来说,这是行不通的。尝试打包或序列化游标(表示与数据库的连接的对象)几乎是不可能的。考虑一下,将整个游标的数​​据编组为意图意味着什么。但是,我确实说“除了”,因为实际上,使用某种 Binder 魔法,Android确实支持跨进程游标(我会包含链接,但 SO 禁止它)。但是,不:您不能将光标放入 Intent。完全没有。曾经。

最后,虽然,大约 3 个答案之前,应该有人停止了疯狂并问:“WTF,伙计?你想做什么??” 以下是完成 OP 尝试做的任何事情的一些方法:

  • 将您需要的数据拉入模型对象树并传递对它的引用
  • 重新运行查询(这是上面建议的,但没有支持的理由)
  • 将光标放入全局并从两个活动中引用它。
于 2014-03-05T06:06:21.233 回答
-1
//For passing :
intent.putExtra("MyKey", YourObj);  // From First Activity

// to retrieve object in second Activity
Object obj = getIntent().getSerializableExtra("MyKey"); //In Second Activity

现在您可以转换对象。希望这对您有所帮助。

于 2012-04-14T05:54:56.090 回答
-1

您已将字符串对象放入此代码中

所以试试下面的代码就可以了。

  Intent intentttt.putExtra("user_searchh", cur.toString()); 

 String str=getIntent().getStringExtra("user_searchh");

对于 Pass Cursor 你需要做这样的事情来制作一个像下面这样的类。

public class MyCursor implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = 1L;
Cursor mCursor;

public void setCursor(Cursor paramCursor){
    mCursor=paramCursor;
}

public Cursor getCursor(){
    return this.mCursor;
  }
}

现在在将 Object 放入 PutExtra 之前,使用以下代码对其进行初始化

   MyCursor mObject=new MyCursor();
    //You can set your Cursor in Below code
   mObject.setCursor(mCursor);
   mIntent.putExtra("mCursor",mObject );

现在在其他活动中,您可以通过以下代码获取光标。

   MyCursor mGetCursor;
  mGetCursor=(MyCursor) getIntent().getSerializableExtra("mCursor");
    if(mGetCursor!=null){
        mGetCursor.getCursor();
    }
于 2012-04-14T05:49:43.287 回答