在Android中从子活动中取回对象
我有一个主活动,它通过在Android中从子活动中取回对象,android,Android,我有一个主活动,它通过意图启动子活动 我知道我们在ActivityResult上调用的方法getStringExtra(string),或getBooleanExtra(string)等;但是它们都返回一个原始数据。。。 如何从子活动的用户定义类中获取对象 谢谢,这是我的第一个问题!:)有点太晚了…你要找的 一个更简单但非最优的解决方案是 片段: public class MyParcelable implements Parcelable { private int mData;
意图
启动子活动
我知道我们在ActivityResult上调用的方法getStringExtra(string)
,或getBooleanExtra(string)
等;但是它们都返回一个原始数据。。。
如何从子活动的用户定义类中获取对象
谢谢,这是我的第一个问题!:)有点太晚了…你要找的
一个更简单但非最优的解决方案是
片段:
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();
}
}
一个有效的例子
编辑:以下是如何使用片段
// 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();
您可以创建Parcelable
自定义对象
像这样
public class Student implements Parcelable{
加上这样的意图
intent.putExtra("student", obj);
然后像这样得到那个物体
Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");
有一个网站,使Parselabel类从您的自定义类…swweeeet!
为了让我这样的noob明白,如果在片段中使用,应该是getActivity().getIntent().getExtras()@Ashl7可以,但不是一个好的设计实践。我更新了我的答案。
Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");