我可以使用 getparcelableextra 在同一个 class 中获得多个意图吗
can i get several intents in the same class using getparcelableextra
有人可以回答我的问题吗?在我的 activity class.java 中,我有一个意图,我想使用意图发送一个对象。当我搜索它时,结果是我必须对要发送的 class "object" 实施 parcelable。我这样做了,但问题是我想将两个对象发送到 main2activity.java,当我尝试这样做时,我的应用程序崩溃了,当我调试它时说 main2activity 有很多意图?所以我的问题是如何使用 put extra 发送两个对象,并使用 getintent.getparcelableextra()?
将它们放入另一个 java
mainactivity.java
clickedplace 是 class 的对象,名为 Place
Intent myintent = new Intent(getApplicationContext(), localpopup.class);
myintent.putExtra("localprice",clickedplace.getTicketId().getLocalPrice());
myintent.putExtra("placeobject", clickedplace.getId());
main2activity.java
double 类型的 localpriceplace
获取类型为 Place
的 pressplace
localpriceplace= getIntent().getParcelableExtra("localprice");
getpressedplace= (Place) getIntent().getParcelableExtra("placeobject");
您应该能够通过创建一个 Bundle 并将每个 Intent 放入其中并使用一个 String 键来做到这一点。在 "main2activity" 中,您应该按名称检索它们。
但是捆绑成一个新的 Intent 并将其发送到 main2activity
否则,如果将数据放入每个Intent中,然后将Intent直接发送给main2activity,则需要在main2activity中实现"onNewIntent"才能获取新数据。
您好,请按照下面link对您有用,解决了您的问题。
http://www.vogella.com/tutorials/AndroidParcelable/article.html
希望以上link对您有所帮助。
如果您想自动生成那些可打包模型 class 然后按照下面的操作 link 可以节省您的时间。
https://github.com/mcharmas/android-parcelable-intellij-plugin
请检查以下代码:
1) 您需要创建您的模型 class 作为一个 parcelable 按照上面 link.
2) 向其他人传递数据activity:
intent.putExtra("student", new Student("1","Mike","6") // which is your model class object passing);
3)GetData into Other Activity 使用意图:
Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");
// after you get all data from student.
希望你明白。
ActivityB.java
public class ActivityB {
private static final String ARG_DATA1 = "Data1";
private static final String ARG_DATA2 = "Data2";
public static startActivityB (Context context, Data1 data1, Data2 data2) {
Bundle bundle = new Bundle();
bundle.putParcelable(ARG_DATA1, data1);
bundle.putParcelable(ARG_DATA2, data2);
Intent intent = new Intent(context, ActivityB.class);
intent.putExtras(bundle);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
Data1 data1 = bundle.getParcelable(ARG_DATA1);
Data2 data2 = bundle.getParcelable(ARG_DATA2);
}
}
Data1.java
public static class Data1 implements Parcelable {
public static final Creator<Data1> CREATOR = new Creator<Data1>() {
@Override
public Data1 createFromParcel(Parcel in) {
return new Data1(in);
}
@Override
public Data1[] newArray(int size) {
return new Data1[size];
}
};
protected Data1(Parcel in) {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
}
和Data2.java也应该实现Parcelable
.
最后,从 ActivityA
、
开始 ActivityB
Data1 data1;
Data2 data2;
ActivityB.startActivityB(ActivityA.this, data1, data2);
试试这个 实现 Parcelable 到您的 Place Model
Intent myintent = new Intent(getApplicationContext(), localpopup.class);
myintent.putExtra("placeModel",clickedplac);
收到
placeModel= getIntent().getParcelableExtra("placeModel");
String price=placeModel.getTicketId().getLocalPrice();
String Id=placeModel.getId()
有人可以回答我的问题吗?在我的 activity class.java 中,我有一个意图,我想使用意图发送一个对象。当我搜索它时,结果是我必须对要发送的 class "object" 实施 parcelable。我这样做了,但问题是我想将两个对象发送到 main2activity.java,当我尝试这样做时,我的应用程序崩溃了,当我调试它时说 main2activity 有很多意图?所以我的问题是如何使用 put extra 发送两个对象,并使用 getintent.getparcelableextra()?
将它们放入另一个 javamainactivity.java
clickedplace 是 class 的对象,名为 Place
Intent myintent = new Intent(getApplicationContext(), localpopup.class);
myintent.putExtra("localprice",clickedplace.getTicketId().getLocalPrice());
myintent.putExtra("placeobject", clickedplace.getId());
main2activity.java double 类型的 localpriceplace 获取类型为 Place
的 pressplacelocalpriceplace= getIntent().getParcelableExtra("localprice");
getpressedplace= (Place) getIntent().getParcelableExtra("placeobject");
您应该能够通过创建一个 Bundle 并将每个 Intent 放入其中并使用一个 String 键来做到这一点。在 "main2activity" 中,您应该按名称检索它们。
但是捆绑成一个新的 Intent 并将其发送到 main2activity
否则,如果将数据放入每个Intent中,然后将Intent直接发送给main2activity,则需要在main2activity中实现"onNewIntent"才能获取新数据。
您好,请按照下面link对您有用,解决了您的问题。
http://www.vogella.com/tutorials/AndroidParcelable/article.html
希望以上link对您有所帮助。
如果您想自动生成那些可打包模型 class 然后按照下面的操作 link 可以节省您的时间。
https://github.com/mcharmas/android-parcelable-intellij-plugin
请检查以下代码:
1) 您需要创建您的模型 class 作为一个 parcelable 按照上面 link.
2) 向其他人传递数据activity:
intent.putExtra("student", new Student("1","Mike","6") // which is your model class object passing);
3)GetData into Other Activity 使用意图:
Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");
// after you get all data from student.
希望你明白。
ActivityB.java
public class ActivityB {
private static final String ARG_DATA1 = "Data1";
private static final String ARG_DATA2 = "Data2";
public static startActivityB (Context context, Data1 data1, Data2 data2) {
Bundle bundle = new Bundle();
bundle.putParcelable(ARG_DATA1, data1);
bundle.putParcelable(ARG_DATA2, data2);
Intent intent = new Intent(context, ActivityB.class);
intent.putExtras(bundle);
context.startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getIntent().getExtras();
Data1 data1 = bundle.getParcelable(ARG_DATA1);
Data2 data2 = bundle.getParcelable(ARG_DATA2);
}
}
Data1.java
public static class Data1 implements Parcelable {
public static final Creator<Data1> CREATOR = new Creator<Data1>() {
@Override
public Data1 createFromParcel(Parcel in) {
return new Data1(in);
}
@Override
public Data1[] newArray(int size) {
return new Data1[size];
}
};
protected Data1(Parcel in) {
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
}
}
和Data2.java也应该实现Parcelable
.
最后,从 ActivityA
、
ActivityB
Data1 data1;
Data2 data2;
ActivityB.startActivityB(ActivityA.this, data1, data2);
试试这个 实现 Parcelable 到您的 Place Model
Intent myintent = new Intent(getApplicationContext(), localpopup.class);
myintent.putExtra("placeModel",clickedplac);
收到
placeModel= getIntent().getParcelableExtra("placeModel");
String price=placeModel.getTicketId().getLocalPrice();
String Id=placeModel.getId()