使用put extra通过3个活动发送数组列表

时间:2014-04-21 10:07:10

标签: android arrays

我所拥有的是三个活动,第一个叫做penddingorders,我在其中创建了一个数组列表,我就像这样添加字符串:

 ArrayList prodlist=new ArrayList();
    for(int z=0;z<=mylist.size();z++){
    if(id.equals(mylist.get(arg2).getOrderId()))
    {
    product=mylist.get(arg2).getProductName();
    quantity=mylist.get(arg2).getQuantity();
    unit=mylist.get(arg2).getUnit();
    price=mylist.get(arg2).getPrice();
    totalprice=mylist.get(arg2).getTotalPrice();
                       totalpriceAfterDiscount=mylist.get(arg2).getPriceAfterDiscount();
                                 note=mylist.get(arg2).getNote();
                                prodlist.add(product);
                                prodlist.add(quantity);
                                prodlist.add(unit);
                                prodlist.add(totalprice);
                                prodlist.add(price);
                                prodlist.add(totalpriceAfterDiscount);
                                prodlist.add(note);
                                arg2++;
                            }

我已经在logcat中打印它并且显示正确:

 Log.e("product list",prodlist+""); 

并且我已经将它从第一个活动发送到第三个活动,像虽然我应该通过第二个活动才能进入第三个活动:

Intent intent = new Intent(PenddingOrders.this, ProductInfoDetails.class);
intent.putStringArrayListExtra("prodlist", prodlist);
startActivity(intent);

在第三个活动中,我通过以下代码获取数组列表:

try{
prodlist = getIntent().getStringArrayListExtra("prodlist");                     
}
catch(Exception e){
e.printStackTrace();
}
    Log.e("prodlist",prodlist+"");

但是在logcat中我得到null值..所以我做错了请帮忙??

3 个答案:

答案 0 :(得分:0)

您可以使用getter setter设置属性,这样您就可以很好地管理您的价值。 并使其变得有意义。所以你可以使用它的Extras ArrayList进入下一个Activity。

请按照https://stackoverflow.com/a/15731120/942224

进行操作

答案 1 :(得分:0)

这是我对stackoverflow的回复,请检查并希望它有很多帮助:

Java / Android ArrayList in different Activity

答案 2 :(得分:0)

最好使用Android Application类来保存数据。 供参考link

public class MyApplication extends Application {
    private ArrayList<String> list;

    public void setValue(ArrayList<String> list) {
        this.list = list;
    }

    public ArrayList<String> getValue() {
        return list;
    }

}

步骤-1 首先从您的活动

中设置值
MyApplication globalVariable = (MyApplication) getApplicationContext();
globalVariable.setValue(prodlist)// Set your ArraList that you want to store

步骤-2- 检索其他活动中的值,如

    MyApplication globalVariable = (MyApplication) getApplicationContext();

    // Get ArrayList from global/application context
    ArrayList<String> list = globalVariable.getValue();

并且不要忘记在Manifest.xml中注册

<application
        android:name="YOUR_PACKAGE_NAME.MyApplication "
        -----------------------