我想将对象从一个活动转移到另一个活动。
在我的第一堂课中,我提出了以下内容
意图;
Intent intentttt.putExtra(" user_searchh",cur.toString());
这里cur是Cursor的对象。 我想将它转移到第二堂课。
在我的第二节课中,我已经放下了
光标c =(光标)getIntent()。getSerializableExtra(" user_searchh");
我试图在没有上述代码的情况下运行这两个类,它可以正常工作。
但是,当我放置上面的代码时,它会提示强制关闭错误。
在DDMS中有错误,如... NulpointerException ... DirectCursorDriver ....等..
我从teke参考 How to pass an object from one activity to another on Android
有50票。 如果可能,请帮助我。谢谢......
答案 0 :(得分:1)
我明白了......
首先,当您将对象转换为字符串时...您永远不能将其转换回对象..
其次,而不是将对象从一个Activity转移到另一个Activity,最好将字符串从一个Activity转移到第二个activity ...然后在第二个活动中计算东西......
将字符串从一个Activity转移到另一个Activity时我犯了两个错误......
1)我犯的第一个错误是......
我使用两个意图对象.. e.g。
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()中要调用的东西是
Intent intent = getIntent();
String email_of_restaurant = intent.getStringExtra(“restaurant_detail”);
感谢所有人,......
答案 1 :(得分:0)
这不是Serializable如何工作的,你是对的,在一个基本层面上,对象被转换为一个String,但它比调用obj.toString()更复杂;
您可以通过Intent传递的唯一对象是实现Serializable interface的对象。
因此,如果Cursor中存在需要传递的信息,请将其取出并将其包装在某种Serializable对象中。
答案 2 :(得分:0)
OMG。这是一个问题的一个小灾难区域,嗯?
OP的问题很简单:他将String放入Intent然后尝试检索Serializable。 String当然是Serializable,但是对Cursor的强制转换不起作用。
如果有人试图提供帮助,而不是仅仅是正确的,那么可以指出,一般情况下,这不会起作用。尝试包裹或序列化游标 - 一个表示与数据库连接的对象 - 几乎不可能。暂时考虑将整个游标数据编组到一个意图中意味着什么。但是后来,我确实说“除了”,因为实际上,使用某种Binder魔法,Android 确实支持跨进程游标(我包括链接,但是SO禁止它)。但是,不,你不能把Cursor放入Intent。完全没有。如初。
最后,虽然,大约3个答案前,有人应该已经停止了疯狂,并问,“WTF,伙计???你想做什么??”以下是一些实现OP尝试的方法:
答案 3 :(得分:-1)
您已将String Object放入此代码
所以尝试下面的代码就可以了。
Intent intentttt.putExtra("user_searchh", cur.toString());
String str=getIntent().getStringExtra("user_searchh");
for 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 );
现在在其他Activity中,您可以通过以下代码获取Cursor。
MyCursor mGetCursor;
mGetCursor=(MyCursor) getIntent().getSerializableExtra("mCursor");
if(mGetCursor!=null){
mGetCursor.getCursor();
}
答案 4 :(得分:-1)
//For passing :
intent.putExtra("MyKey", YourObj); // From First Activity
// to retrieve object in second Activity
Object obj = getIntent().getSerializableExtra("MyKey"); //In Second Activity
现在您可以转换对象了。 希望这有助于你。