2017-12-22 1 views
0

Ich möchte eine ganze Nummer von der ersten zur zweiten Aktivität senden. Diese Nummer ist die Anzahl der Edittexte, die ich erstellen möchte.Wie erhalten Sie Werte von programmatisch erstellten EditTexts?

for (int i = 0; i < num_from_first_activity; i++) { 
     EditText editText = new EditText(getApplicationContext()); 
     final LinearLayout ll = findViewById(R.id.llid); 
     ll.addView(editText); 
} 

Nachdem ich diese Felder mit einigen Daten gefüllt. Wie bekomme ich Werte von ihnen, wenn ich auf die Schaltfläche klicke?

Antwort

1

1.In Ihrer Schleife müssen Sie nicht ll = findViewById(R.id.layout_actual_effect); anrufen.

2.Use LinearLayout als globale Variable, können Sie es an anderer Stelle verwenden

3.Use ll.getChildAt(position) Ansicht zu erhalten, und verwenden Sie editText.getText().toString() Wert zu erhalten

4.Call createEditText vor getValue

Aufruf

Versuchen Sie dies.

private int num_from_first_activity = 3; 
private LinearLayout ll; 

/** 
* create EditText 
*/ 
private void createEditText() { 
    ll = findViewById(R.id.layout_actual_effect); 
    for (int i = 0; i < num_from_first_activity; i++) { 
     EditText editText = new EditText(getApplicationContext()); 
     ll.addView(editText); 
    } 
} 

/** 
* get value from EditText 
* 
* @param position in LinearLayout 
* @return 
*/ 
public String getValue(int position) { 
    EditText editText = (EditText) ll.getChildAt(position); 
    return editText.getText().toString(); 
} 
0

Sie müssen Schleife in der gleichen LinearLayout Sie hinzugefügt, aber jetzt nehmen Sie Wert:

LinearLayout ll = findViewById(R.id.llid); 
for(int i=0; i<num_from_first_activity; i++) { 
    EditText editText = (EditText) ll.getChildAt(i); 

} 

So können Sie Sie Schleife sehen, so dass Sie eine Methode machen können, dass die richtigen Artikel zu erhalten Speichern Gießen es zu EditText, wenn und nur wenn Sie wissen, dass sie EditText wie folgt aus:

private String getTextAtEditTextIndex(int index){ 
    LinearLayout ll = findViewById(R.id.llid); 
    EditText editText = (EditText) ll.getChildAt(i); 
    return editText.getText().toString();  
} 

diese Methode String von editText im EditText an einem bestimmten Index zurückkehren wird.

Verwandte Themen