2016-09-20 5 views
3

Ich habe versucht, eine App über Benutzereingaben den Nachnamen, den Vornamen und die Adresse zu machen. Was ich versuchte, war, den Benutzer in einem EditText eingeben und es auf einem TextView anzuzeigen, aber ich kann den folgenden Text nicht anzeigen, da ein Fehler in der Laufzeit ist. Was es tut ist, wenn ich auf die Senden-Schaltfläche klicke, wird es die Benutzereingabe anzeigen, aber was es auf der TextView sagt, ist "android.support.v7.widget.TextView .... etc". Ich habe gerade mit der Programmierung von Android begonnen und alles ist verwirrend. Bitte sagen Sie mir die grundlegendsten Dinge, um dieses Problem zu lösen.Basic Android: Wie Zeichenfolge der Benutzereingabe anzuzeigen?

+0

nur Anrufanzeige.setText ("Name:" + lname.getText() + "," + fname.getText()); – lukjar

Antwort

7

Sie haben die Variablen korrekt definiert, aber Sie müssen den Wert dessen, was der Bearbeitungstext hat, ermitteln. Ersetzen Sie also Ihren Code damit.

result.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     display.setText("Name: " + lname.getText().toString() + ", " + fname.getText().toString()); 
    } 
    }); 
+0

vielen dank! –

1

lname und fname sind EditText Sie können 2 EditText mit Zeichenfolge nicht verketten.

Sie benötigen

display.setText("Name: " + lname.getText() + ", " + fname.getText()); 
+0

Wenn Sie die Funktion toString() aufrufen, dann verketten Sie nicht 2 EditText, die Sie 2 String verketten. String toString() es gibt String zurück, so wie ich schon sagte, Sie CANT verketten 2 EditText mit String. –

+0

Ich schlage vor, Sie versuchen es und sehen, was passiert –

+0

Es ist der Grund, warum das Thema erstellt wurde, versuchte er String mit 2 Edittext zu verketten und er hatte Fehler. –

3

Sie tun müssen, um den Text aus den EditText Widgets holen, wenn Sie es in der TextView zeigen wollen. Jetzt drucken Sie einfach das Objekt in die setText.

Versuchen Sie es stattdessen.

display.setText("Name: " + lname.getText().toString() + ", " + fname.getText().toString()); 
3

Sie erhalten nicht den Text EditText. Holt den Text des EditText mit lname.getText() toString() und dann setzen Sie diesen Text zu Ihrem TextView

Versuchen Sie diesen Code:.

result.setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     display.setText("Name: " + lname.getText().toString() + ", " + fname.getText().toString()); 
    } 
}); 
1

Mein Vorschlag ist, den Code modularisieren.

Erstellen Sie zunächst eine Bean-Klasse, die fName und lName als zwei Zeichenfolgenfelder enthält und die toString() -Methode wie folgt übersteuert.

class Person { 
    private String fName; 
    private String lName; 

    // Getter and Setter methods, which you can write. 

    public String toString() { 
     return "Name: " + lname + ", " + fname; 
    } 
} 

Erstellen Sie Bean-Objekt und setzen Sie Listener auf Ihre beiden Edittext in activty.

Person person = new Person(); 

fname.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 

      //set bean object field fName here. 
      person.setFname(s.toString()); 
      } 

      public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 

      public void onTextChanged(CharSequence s, int start, int before, int count) {} 
     }); 

Gleiches für anderes edittext Feld.

Dann innerhalb onclick Listener einfach Person Objekt ToString() Methode zurückgeben.

result.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View v) 
        { 
         display.setText(person.toString()); 
        } 
       }); 
0

auf Hugo Houyez bauen

beantworten
display.setText(String.format("Name: %1$s, %2$s",lname.getText().toString(),fname.getText().toString); 

jetzt können Sie die vollständige Zeichenfolge Sie als erster Wert angezeigt werden soll sehen.

pro% s Wert können Sie einen String-Wert hinzufügen. Der Wert% 1 $ s bedeutet, dass der erste String hier angezeigt wird.% 2 $ s zeigt den zweiten String und so weiter.

Verwandte Themen