2017-12-28 16 views
-1

Ich wundere mich über diese seltsame Sache. Ich möchte eine Schaltfläche erstellen und wenn die Schaltfläche geklickt wird, möchte ich eine neue Schaltfläche erstellen und die alte entfernen, alles nur mit Code.Erstellen Sie die Schaltfläche programmgesteuert und erstellen Sie die nächste Schaltfläche von der ersten Schaltfläche mit Listener

Hier ist mein Code so weit und es funktioniert nicht wie ich gehofft hatte. Irgendwelche Eingaben hier? Vielen Dank.

public void createRounds(int rounds){ 
    ArrayList<Button> buttonArray = new ArrayList<>(); 
    for(int i=0;i<=rounds;i++){ 
     bk = new Button(getActivity()); 
     bk.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT)); 
     bk.setBackground(getResources().getDrawable(R.drawable.btnshapegreen)); 
     bk.setId(i); 
     bk.setText("Button "+i); 
     buttonArray.add(bk); 
    } 
    for(final Button a : buttonArray){ 
      generated_time.addView(a); 
      a.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        Toast.makeText(getActivity(),a.getText().toString(),Toast.LENGTH_LONG).show(); 
        generated_time.removeView(a); 
       } 
      }); 
    } 
} 

Ich weiß, dass die für-jede Schleife aller Tasten auf einmal hinzufügt, aber isnt es eine Möglichkeit, einen nach dem anderen hinzufügen?

+0

Vielleicht können Sie einfach seine ID ändern? und machen Sie einen globalen onclicklistener, dann können Sie mit Ihrem Plan gehen, was auch immer Sie auf Ihrem Hörer tun möchten. –

Antwort

0

I Beispielcode erstellt zu beantworten, was ich bin, um Ihr Problem zu verstehen siehe unten Code mit XML und JAVA

XML

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

</android.support.constraint.ConstraintLayout> 

JAVA

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    private int id = 0; 
    private Button button; 
    private ConstraintLayout layout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     layout = findViewById(R.id.container); 
     button = new Button(this); 
     button.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     button.setId(id); 
     button.setText(String.format("%d", id)); 
     button.setOnClickListener(this); 
     layout.addView(button); 
     layout.requestLayout(); 
    } 

    @Override 
    public void onClick(View v) { 
     if (v.getId() == id) { 
      id++; 
      button.setId(id); 
      button.setText(String.format("%d", id)); 
      layout.requestLayout(); 
     } 
    } 
} 
+0

Das hat es geschafft. Jetzt werde ich nur etwas hinzufügen. Vielen Dank –

Verwandte Themen