0

我正在使用意图将 arrayList 从活动发送到子活动。在我发送意图的活动中,arrayList 的大小和项目是正确的。代码是

  intent.putStringArrayListExtra("IMAGE_URLS", imageUrls);

当我点击返回按钮并再次将arraylist 发送到 subAcitivity 时,它会发送正确的arrayList。但是在 subActivity 数组列表中,“图像”包含以前的项目,尽管我每次都用“新”创建它。

 @Override
        protected void onResume() {
            super.onResume();
            load_image();
        }

        private void load_image() {
                **image = new ArrayList<String>();**
                Intent intent = getIntent();
                Bundle b = intent.getExtras();
                image =  b.getStringArrayList("IMAGE_URLS");

                    for (int i = 0; i < image.size(); i++) {
                    infoLog("URL--->>"+image.get(i));
                }

             }

我也试过image.clear(); 在后退按钮中。

OnClickListener backButtonListener = new OnClickListener() {

        @Override
        public void onClick(View v) {
            image.clear();
                    finish();
              }
  }

它没有用。我没有找到原因。请帮忙。谢谢

4

1 回答 1

0

ArrayList返回的不一定b.getStringArrayList(...)backing ArrayList,它很可能是一个副本。换句话说,对返回列表的修改不会影响存储在Bundle.

我建议你这样做

b.putStringArrayList("IMAGE_URLS", new ArrayList<String>());
于 2012-07-25T08:18:23.543 回答