2017-04-10 2 views
0

Ich versuche, drei Arrays zu anderen Aktivitäten zu übergeben, aber aus irgendeinem Grund scheint es nur ein letztes Array von der übergeordneten Aktivität übergeben geht an das Kind und der Rest dont Hier ist die Eltern Aktivitätscode:Wie mehrere ArrayList <String> an eine andere Aktivität übergeben werden

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_category_list_items); 

    Intent intent = getIntent(); 
    categoryTitle = intent.getStringExtra(categoryName); 

    if(Arrays.asList(FragmentHelper.Days).contains(categoryTitle)) { 
     header.setText("Start the workout"); 
     addButton.setText("Start"); 
     addButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Context context = v.getContext(); 
       Intent intent = new Intent(context, ItemDetailActivityCopy.class); 
       Bundle extras = new Bundle(); 
       List<ListItem> items = listManager.getList(categoryTitle); 
       ArrayList<String> itemName = new ArrayList<>(); 
       ArrayList<String> itemTime = new ArrayList<>(); 
       ArrayList<String> itemNumberOfSets = new ArrayList<>(); 

       for(int i = 0; i < listManager.getNumberOfItemsCopy(categoryTitle); i++) { 
        itemName.add(items.get(i).getDescription()); 
        itemTime.add(String.valueOf(items.get(i).getTime())); 
        itemNumberOfSets.add(String.valueOf(items.get(i).getNumberOfSets())); 
       } 
       Log.d("Title:", itemName.toString()); 
       Log.d("Time:", itemTime.toString()); 
       Log.d("Num of sets:", itemNumberOfSets.toString()); 
       extras.putStringArrayList(ItemDetailActivityCopy.itemName.toString(), itemName); 
       extras.putStringArrayList(ItemDetailActivityCopy.itemTime.toString(), itemTime); 
       extras.putStringArrayList(ItemDetailActivityCopy.itemNumberOfSets.toString(), itemNumberOfSets); 
       intent.putExtras(extras); 
       context.startActivity(intent); 
      } 
     }); 
    } 
} 
+0

Mögliche Duplikat von [Wie eine Arraylist auf eine andere Tätigkeit zu übergeben und sie in Doppel umwandeln] (http://stackoverflow.com/questions/22640669/how-to-pass-an- arrayliststring-to-ahead-activity-und-convert-it-in-double) –

+2

"der rest nicht" - wie haben Sie das festgestellt? Wo ist Ihr Code zum Abrufen von Werten aus den Extras? Beachten Sie, dass die Schlüssel zu Ihren Extras eher seltsam sind. Normalerweise verwenden wir Konstanten, nicht 'toString()' eines anderen Objekts. – CommonsWare

+0

Mögliche Duplikate von [Passing und ArrayList durch Absicht] (http://stackoverflow.com/questions/41014704/passing-and-arraylistservice-through-intent) –

Antwort

0

Pass ArrayList<String> von einem Activity zu anderen Activity, mit putStringArrayListExtra

Intent intent = new Intent(context, ItemDetailActivityCopy.class); 
intent.putStringArrayListExtra("LIST_ITEMS", itemName); 
startActivity(intent); 

ArrayList<String> erhalten von anderen Aktivität,

ArrayList<String> listItems; 
listItems = getIntent().getStringArrayListExtra("LIST_ITEMS"); 
+1

Bitte erklären, ** im Detail **, wie dies lösen würde das Problem. – CommonsWare

+0

Ich habe ausführlich erklärt, verwenden Sie die Methode meiner Antwort zu senden und ArrayList von String von einer Aktivität zu anderen –

+0

Yep, es funktioniert, aber ich bekomme nicht, warum es nicht, wenn ich Bundle Extras = neue Bundle(); – Oleh

Verwandte Themen