gpt4 book ai didi

java - Android - startActivityForResult 传递对象的 ArrayList 返回

转载 作者:行者123 更新时间:2023-11-29 09:27:00 25 4
gpt4 key购买 nike

所以我有 Activity A 和 Activity B,在“A”中,我需要转到“B”,然后将 Food 项添加到它们的数组列表中,然后将此数组列表传递回 Activity A,我是如何得到的我当前设置的问题

这是A到B的 Intent

Intent i = new Intent(OrderMain.this , OrderAdd.class);
startActivityForResult(i,1);

这是从 B 到 A 的返回 Intent

Intent returnIntent = new Intent();
Bundle b = new Bundle();
b.putSerializable("results", orderArray);
returnIntent.putExtras(b);
setResult(Activity.RESULT_OK, returnIntent);
finish();

最后这是我在 A 中的 onActivityResults

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
Bundle b = getIntent().getExtras();
ArrayList<Food> test = new ArrayList<>();
test = (ArrayList<Food>) b.getSerializable("results");
setOrderArray(test);
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}

setOrderArray 只是一个将数组设置为新返回数组的函数

这是食物对象

import java.io.Serializable;

public class Food implements Serializable{
private String name;
private int cost;
private int quantity;

public Food( String name, int cost, int quantity){
this.name = name;
this.cost = cost;
this.quantity = quantity;
}
public void setQuantity(int quantity)
{
this.quantity = quantity;
}
public void setName(String name)
{
this.name = name;
}
public void setCost(int cost)
{
this.cost = cost;
}
public int getTotal()
{
return cost * quantity;
}
public String getName ()
{
return name;
}
public int getCost()
{
return cost;
}
public int getQuantity()
{
return quantity;
}
public void addQuantity()
{
quantity++;
}
public void decQuantity()
{
quantity--;
}
}

我目前遇到的问题是在这行代码中:

test = (ArrayList<Food>) b.getSerializable("results");

它说有一个“未经检查的转换”并且它的预期用途不能正常工作,我们将不胜感激

最佳答案

不要使用 Serializable,而是使用 Parcelable。Parcelable 是速度之王,确保您的对象类实现了 Parcelable。

关于java - Android - startActivityForResult 传递对象的 ArrayList 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52354092/

25 4 0