2017-06-21 1 views
0

Ich erstelle Schaltflächen dynamisch in einem linearen Layout und nach Klicken auf eine Schaltfläche wird eine neue Aktivität ausgeführt. Ich möchte eine Zeichenfolge übergeben mit Informationen darüber, welche Schaltfläche mit dieser Aktivität als putExtra angeklickt wurde. Aus irgendeinem Grund die Absichten, die ich zu den einzelnen Schaltflächen hinzufügen OnClickListener erhalten überschrieben, so dass es nur die Zeichenfolge der letzten Taste sendet und nicht derjenige, der angeklickt wird:Hinzufügen einer anderen putExtra zu einer Absicht für jede dynamisch erstellte Schaltfläche

LinearLayout l = (LinearLayout) findViewById(R.id.allOptions); 

    for(int i=0; i<currentOptions.size(); i++){ 
     Button newButton = new Button(this); 
     SortingGroup s = currentOptions.get(i); 
     newButton.setText(s.getName()); 
     sortGroupName = s.getName();; 
     newButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(v.getContext(),CategorySelector.class); 
       intent.putExtra("sorting_category_name",sortGroupName); 
       startActivity(intent); 
      } 
     }); 
     l.addView(newButton); 
    } 

Antwort

3

die sortGroupname in Arraylist hinzufügen und setid() für Schaltflächen

ArrayList<String> names=new ArrayList<>();

Set ID für Knöpfe

n ewButton.setId (i);

Namen hinzufügen

names.add(s.getName()); 

OnClick Listener wie folgt

@Override 
     public void onClick(View v) { 
      Intent intent = new Intent(v.getContext(),CategorySelector.class); 
      intent.putExtra("sorting_category_name",names.get(v.getId())); 
      startActivity(intent); 
     } 
+0

Vielen Dank an Arraylist! Das hat perfekt funktioniert. Ich vermute, dass mein Problem war, dass Sie in einem putExtra für dasselbe Tag keine unterschiedlichen Werte festlegen können, selbst wenn jedes Mal eine neue Absicht erstellt wird? – Mike

Verwandte Themen