2012-09-25 111 views
2

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

的问题是,如果我按一下按钮,再次打开FormActivity,两人的ArrayList不会再发送,我也得到一个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(); 
+0

你可以发布NPE的堆栈跟踪吗? – mrres1

回答

1

你可以声明你的ArrayList是一个静态的,看看下面...

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

通过这样做,您可以从任何地方通过类型访问ArrayList

activity_name.array; 

其中ACTIVITY_NAME是在声明静态ArrayList中的活性或类。

祝你好运。

+0

完美运作。谢谢! –

+0

欢迎,如果可能的话还可以投票。 –