从Android中的子活动中取回对象[重复]
Posted
技术标签:
【中文标题】从Android中的子活动中取回对象[重复]【英文标题】:Getting back object from child activiy in Android [duplicate] 【发布时间】:2015-09-14 18:56:06 【问题描述】:我有一个 main_activity,它通过 Intent
启动一个子 Activity
。
我知道我们在onActivityResult
中调用的方法getStringExtra(string)
或getBooleanExtra(string)
等;但他们都是return
原始数据...
如何从子活动的用户定义类中获取对象?
谢谢,这是我的第一个问题! :) 有点太晚了...
【问题讨论】:
【参考方案1】:您正在寻找Parcelable
。
一个更简单但非最佳的解决方案是Serializable
。
片段:
public class MyParcelable implements Parcelable
private int mData;
public int describeContents()
return 0;
public void writeToParcel(Parcel out, int flags)
out.writeInt(mData);
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>()
public MyParcelable createFromParcel(Parcel in)
return new MyParcelable(in);
public MyParcelable[] newArray(int size)
return new MyParcelable[size];
;
private MyParcelable(Parcel in)
mData = in.readInt();
用法:
// Sender class
MyParcelable mp = new MyParcelable();
intent.putExtra("KEY_PARCEL", mp);
// Receiver class
Bundle data = getIntent().getExtras();
MyParcelable student = (Myparcelable)data.getParcelable("KEY_PARCEL");
Here's 一个工作示例。
编辑:这是使用片段的方法。
// Receiver class
Bundle data = getIntent().getExtras();
public class MyFragment extends Fragment
public static MyFragment newInstance(int index, Bundle data)
MyFragment f = new MyFragment();
data.putInt("index", index);
f.setArguments(data);
return f;
// In the fragment
Bundle data = getArguments();
【讨论】:
只是为了让像我这样的菜鸟清楚,如果在片段中使用它应该是 getActivity().getIntent().getExtras() ! @Ashl7 可行,但不是一个好的设计实践。我更新了我的答案。【参考方案2】:您可以创建Parcelable
自定义对象。
喜欢这个
public class Student implements Parcelable
像这样添加到意图
intent.putExtra("student", obj);
然后得到那个对象像
Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");
【讨论】:
【参考方案3】:有这个网站可以从您的自定义类中生成 Parselabel 类....swweeeeeet! http://www.parcelabler.com/
【讨论】:
以上是关于从Android中的子活动中取回对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用android中的可序列化将对象从第二个活动传递回主要活动