Android putExtra停止工作

时间:2012-09-25 02:41:35

标签: android android-activity

我有和Intent,我从MainActivity传递两个Parcelables的ArrayLists到一个“FormActivity”,它接收ArrayLists perfeclty(使用startActivityForResult),完美地返回通过表单收集的数据。

问题在于,如果我单击按钮再次打开FormActivity,则不会再次发送两个ArrayLists,并且会出现NullPointerException。

有没有人见过这个?

谢谢。

MainActivity代码:

 public void insertProductButtonClicked(View view){
    Intent addProductIntent = new Intent(getBaseContext(), AddProductActivity.class);
    addProductIntent.removeExtra("consumers");
    addProductIntent.removeExtra("products");
    addProductIntent.putParcelableArrayListExtra("consumers", consumers);
    addProductIntent.putParcelableArrayListExtra("products", products);
    startActivityForResult(addProductIntent, MyActivities.ACTIVITY_ADD_PRODUCT);
}

AddProductActivity代码(“FormActivity”):

    Intent intent = new Intent();
intent.putExtra("productName", productNameEditText.getText().toString());
intent.putExtra("productPrice", Double.valueOf(productPriceEditText.getText().toString()));

SparseBooleanArray checkedItems = consumersListView.getCheckedItemPositions();
ArrayList<Integer> consumersToAdd = new ArrayList<Integer>();
for (int i = 0; i < consumers.size(); i++) {
    if (checkedItems.get(i)){
        consumersToAdd.add(consumers.get(i).getId());
    }
}

intent.putIntegerArrayListExtra("productConsumers", consumersToAdd);
setResult(Activity.RESULT_OK, intent);
finish();

1 个答案:

答案 0 :(得分:1)

您可以将ArrayList声明为静态,请在下面查看...

public static ArrayList<String> array = new ArrayList<String>(); 

通过这样做,您可以按类型

从任何地方访问您的ArrayList
activity_name.array;

其中activity_name是您声明静态ArrayList的活动或类。

祝你好运。