从EditText元素将文本设置为TextView显示空白

时间:2019-05-03 18:22:22

标签: java android android-edittext textview

我有一个用于名称字段的EditText字段和一个按钮。当我在字段中键入名称并按下按钮时。它应显示“嗨,”和EditText字段的值。

我的解决方案是在EditText对象上使用getText()。toString()并将其传递给字符串变量。但是,只要我将其用于setText(),它就会返回“”。

我改用它,它可以工作,但是我很困惑有什么区别? nametext.setText(“ Hi,nametext.getText()。toString());

Button btn_show;
EditText nametext;
String input_msg;

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

    nametext = findViewById(R.id.name_text);
    input_msg = nametext.getText().toString();

    btn_show = findViewById(R.id.hi);

    btn_show.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            nametext.setText("Hi, " + input_msg);  // this returns ""

        /* when i use nametext.getText().toString() in place of input_msg
        /* it returns the string I typed in the edittext. What's the 
        /* difference?
        /* nametext.setText("Hi,nametext.getText().toString()); // returns the actual string I typed in the edittext field

        }
    });
}

nametext.setText(“ Hi,nametext.getText()。toString()); //返回在字段中键入的实际字符串

nametext.setText(“ Hi,” + input_msg); //返回“”

2 个答案:

答案 0 :(得分:3)

您好,您以正确的方式进行操作,只是在点击之前致电getText()时遇到了一个小错误。

btn_show.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        input_msg = nametext.getText().toString();
        nametext.setText("Hi, " + input_msg); 
  }
 });

答案 1 :(得分:0)

存在差异的原因是,当您填充input_msg时,该值仍为空。在字符串填充视图后单击按钮时,input_msg不变。

因此,您需要做的就是仅在单击按钮时获取值:

btn_show.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        nametext.setText("Hi, " + nametext.getText().toString()); 
    }
});

如果要使用Java 8,它甚至更简单:

btn_show.setOnClickListener((View.OnClickListener) v -> nametext.setText("Hi, " + nametext.getText().toString()));