2016-09-20 69 views
3

我试图做一个关于用户输入的应用程序的姓氏,名字和地址。我试图做的是让用户输入EditText并将其显示在TextView上,但由于运行时出现错误,因此我无法显示以下文本。它所做的是,如果我点击提交按钮,它将显示用户输入,但它在TextView上的内容是“android.support.v7.widget.TextView ....等”。 我刚刚开始进行Android编程,一切都很混乱。请告诉我解决这个问题的最基本的东西。基本Android:如何显示用户输入字符串?

public class MainActivity extends AppCompatActivity { 

      EditText fname, lname; 
      TextView display; 
      Button result; 

      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_main); 


       fname = (EditText) findViewById(R.id.etFirstname); 
       lname = (EditText) findViewById(R.id.etLastname); 
       display = (TextView) findViewById(R.id.tvResult); 
       result = (Button) findViewById(R.id.btnSubmit); 



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

    } 
+0

只是 呼叫显示。setText(“Name:”+ lname.getText()+“,”+ fname.getText()); – lukjar

回答

7

您已经定义了正确的变量,但您必须获取编辑文本的值。所以用这个替换你的代码。

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

非常感谢你! –

1

lname和fname是EditText你无法连接2 EditText与字符串。

你需要做的

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

如果你调用函数toString(),那么你不连接2 EditText你连接2字符串。 String toString() 它返回String,所以如前所述,您可以将2 EditText与String连接起来。 –

+0

我建议你试一试,看看会发生什么 –

+0

这就是为什么话题被创建的原因,他试图用2 edittext连接字符串,他有错误。 –

3

您需要获取从EditText小部件的文本时,要显示它在TextView。现在,您只需将对象打印到setText

试试这个。

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

您没有获取EditText的文字。取使用lname.getText()的EditText文本的toString()然后将此文本设置为您TextView

试试这个代码:

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

我的建议是模块化代码。

首先创建一个包含fName和lName的bean类作为两个字符串字段并覆盖toString()方法,如下所示。

class Person { 
    private String fName; 
    private String lName; 

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

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

创建bean对象,并将监听器放在两个edittext中。

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) {} 
     }); 

与其他edittext字段相同。

lname.addTextChangedListener(new TextWatcher() { 

       public void afterTextChanged(Editable s) { 

       //set bean object field lName here. 
       person.setLName(s.toString()); 
       } 

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

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

然后在onclick监听器里面简单地返回person对象的toString()方法。

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

,以建立在雨果Houyez回答

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

现在你可以看到你想要显示的第一个值满弦。

%s你可以添加一个字符串值。 %1 $ s的值意味着第一个字符串将显示在这里%2 $ s将显示第二个字符串等等。

相关问题