我可以使用getparcelableextra在同一个类中获得几个意图

问题描述 投票:0回答:4

有人可以回答我的问题。在我的活动class.java中,我有一个意图,我想使用intent发送一个对象。当我搜索它时,结果是我必须实现parcelable到我想发送它的类“对象”。我这样做但事情是我想把两个对象发送到main2activity.java,当我试图这样做时,我的应用程序崩溃了,当我调试它时说main2activity有很多意图吗?所以我的问题是如何使用put extra发送两个对象,并使用getintent.getparcelableextra()在其他java中获取它们?

main activity.Java

clickedplace是一个名为Place的类的对象

Intent myintent = new Intent(getApplicationContext(), localpopup.class);
                    myintent.putExtra("localprice",clickedplace.getTicketId().getLocalPrice());
                    myintent.putExtra("placeobject", clickedplace.getId());

main2activity.java类型为Place的double getpressplace类型的localpriceplace

localpriceplace= getIntent().getParcelableExtra("localprice");
        getpressedplace= (Place) getIntent().getParcelableExtra("placeobject");
android android-intent parcelable
4个回答
0
投票

您应该能够通过创建Bundle并使用String键将每个Intent放入其中来实现此目的。在“main2activity”中,您应该按名称检索它们。

但捆绑成新的Intent并将其发送到main2activity

否则,如果要将数据放入每个Intent,然后将Intent直接发送到main2activity,则需要在main2activity中实现“onNewIntent”以获取新数据。


0
投票

嗨请按照以下链接对您有用并解决您的问题。

http://www.vogella.com/tutorials/AndroidParcelable/article.html

希望以上链接可以帮助您。

如果您想自动生成那些可模仿的模型类,请按照以下链接节省您的时间。

https://github.com/mcharmas/android-parcelable-intellij-plugin

请检查以下代码:

1)你需要通过上面的链接创建你的模型类作为一个parcelable follow。

2)将数据传递给其他活动:

 intent.putExtra("student", new Student("1","Mike","6") // which is your model class object passing);

3)使用intent将GetData转换为其他活动:

Bundle data = getIntent().getExtras();
Student student = (Student) data.getParcelable("student");
// after you get all data from student.

希望你能理解。


0
投票

试试这个实现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()

0
投票

activity B.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

最后,从ActivityB开始ActivityA

Data1 data1;
Data2 data2;

ActivityB.startActivityB(ActivityA.this, data1, data2);
© www.soinside.com 2019 - 2024. All rights reserved.