Arraylist元素开始太多活动

Arraylist元素开始太多活动

问题描述:

我正在开发一个应用程序,它发送一个字符串数组与putStringArrayListExtra。在接受第二项活动时。问题是,如果我发送2个项目,则2个活动将打开。第二个元素是在列表视图(仅显示一个),当我点击时,现在有第一个项目。我想要在同一个列表视图中的2个项目。我究竟做错了什么?Arraylist元素开始太多活动

第一项活动

final int len = thumbnailsselection.length; 
      int cnt = 0; 
      String selectImages = ""; 
      // String result = ""; 
      String ar=""; 


      for (int i =0; i<len; i++) 
      { 
       if (thumbnailsselection[i]) 
       { 
        cnt++; 
        ar = nev[i]; 
        selectImages = nev[i] + "|"; 
        // List<String> myList = new ArrayList<String>(Arrays.asList(selectImages)); 
        ArrayList<String> arr = new ArrayList<String>(); 
        arr.add(selectImages); 

        Intent intent = new Intent(Gallery.this,Upload.class); 
        intent.putStringArrayListExtra("array_list", arr); 

        startActivity(intent); 

        // Log.i("adat","galleri:" + arr); 





       } 

      } 
      if (cnt == 0){ 
       Toast.makeText(getApplicationContext(), 
         "Please select at least one image", 
         Toast.LENGTH_LONG).show(); 
      } else { 





       Toast.makeText(getApplicationContext(), 
         "You've selected Total " + cnt + " image(s).", 
         Toast.LENGTH_LONG).show(); 

      } 
     } 
    }); 

次活动

ListView listView; 

ArrayAdapter<String> adapter; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_upload); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    listView = (ListView) findViewById(R.id.list); 

    Bundle b = getIntent().getExtras(); 


     // ArrayList<String> arr = (ArrayList<String>)b.getStringArrayList("array_list"); 
    ArrayList<String> arr = b.getStringArrayList("array_list"); 
     Log.i("adat","UPLOAD:"+arr); 


    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, android.R.id.text1, arr); 
    listView.setAdapter(adapter); 

    } 
+1

将你的Arraylist声明放在for循环之外。在for循环之后还初始化意图和调用startActivity()。 – sJy

+0

将意图数据传递逻辑放在for循环之外 –

不喜欢之下,而你正在创造新的ArrayList每次当你循环这就是为什么你没有得到正确的值。

而且还带你在循环之外的意图。

ArrayList<String> arr = new ArrayList<String>(); 
for (int i =0; i<len; i++){ 
    if (thumbnailsselection[i]){ 
     cnt++; 
     ar = nev[i]; 
     selectImages = nev[i] + "|";    
     arr.add(selectImages); 
    } 
} 

Intent intent = new Intent(Gallery.this,Upload.class); 
intent.putStringArrayListExtra("array_list", arr); 
startActivity(intent); 
+1

这不能解决问题。 startActivity需要在for循环之外。 – sJy

+1

@sJy你是对的我更新了我的答案。 –

+0

谢谢。这工作。但是当我点击回来,并且如果我有3个项目,它不会首先让我回到活动,但是对于同一活动,使用第二个元素,我再次单击后退按钮,然后列表中的第一个元素。 – Janos