基本Android:如何显示用户输入的字符串?

时间:2016-09-20 07:59:26

标签: java android

我尝试制作一个关于用户输入的应用程序姓氏,名字和地址。我试图做的是让用户输入EditText并将其显示在TextView上,但我无法显示以下文本,因为运行时出错。它的作用是,如果我单击提交按钮,它将显示用户输入,但它在TextView上的内容是" android.support.v7.widget.TextView .... etc"。 我刚刚开始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);
                    }
                });
        }

    }

6 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:3)

如果要在EditText中显示文本,则需要从TextView小部件中提取文字。现在,您只需将对象打印到setText

试试这个。

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

答案 2 :(得分:3)

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

试试这段代码:

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

答案 3 :(得分:1)

lname和fname是EditText,你不能用字符串连接2 EditText。

你需要做

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

答案 4 :(得分:1)

我的建议是模块化您的代码。

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

class Person {
    private String fName;
    private String lName;

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

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

在activty中创建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());
                    }
                });

答案 5 :(得分:0)

建立在Hugo Houyez的回答

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

现在您可以看到要显示为第一个值的完整字符串。

每%s值,您可以添加字符串值。 %1 $ s值表示第一个字符串将显示在此处%2 $ s将显示第二个字符串,依此类推。