如何将编辑文本值传递给Toast?

时间:2019-03-26 18:56:27

标签: java android

我刚开始使用android,并且试图制作一个简单的程序来从用户那里获取字符串并将结果显示为Toast

EditText e = (EditText) findViewById(R.id.editText);
final String result = e.getText().toString();
Button btx = (Button) findViewById(R.id.button2);
btx.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
     }
}

现在,如果我在editText中键入任何内容,则可以打印该值,但可以打印默认的文本值,即使我编辑它也可以打印相同的值

enter image description here 如您在按下按钮时的图片中所见,它在吐司面包上显示“名称”
即使更改,它也显示出与“名称”相同的内容。我希望它也显示我稍后输入的值。 我该怎么办?

4 个答案:

答案 0 :(得分:1)

在设置视图时存储文本。这就是为什么您获得默认文本的原因。

移动

final String result=e.getText().toString();

进入onClick

@Override
public void onClick(View v) {
    final String result = e.getText().toString();
    Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
}

它应该在按下按钮时得到文本。

答案 1 :(得分:1)

原因是您的变量String result在单击按钮时没有采用最新值。

尝试一下:

  final EditText e = (EditText) findViewById(R.id.editText);
  Button btx = (Button) findViewById(R.id.button2);
  btx.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         String result = e.getText().toString();
         Toast.makeText(getApplicationContext(), result, Toast.LENGTH_LONG).show();
     }
 }

答案 2 :(得分:1)

您的要求是显示EditText吐司中的文字

首先使EditText对象为球形

class ActivityClassFileName extend AppCompactActivity
{
    EditText ToastText;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitylayout);

        //initialize EditText  object
        ToastText = (EditText) findViewById(R.id.editText);
        Button btx = (Button) findViewById(R.id.button2);

        btx.setOnClickListener(new View.OnClickListener() 
        {
              @Override
              public void onClick(View v) 
              {
                   //showing Toast
                    Toast.makeText(getApplicationContext(), ToastText.getText().toString(), Toast.LENGTH_LONG).show();
              }
        }

    }
}

答案 3 :(得分:1)

有时候,您必须通过创建新方法来在onclick之外显示烤面包。

public class MainActivity extends AppCompatActivity {

EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Button button = findViewById(R.id.button);
    editText=findViewById(R.id.editTextView);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String testString=editText.getText().toString();
            showToast(testString);
        }
    });
}

private void showToast(String str) {
        Toast.makeText(getApplicationContext(), str, Toast.LENGTH_SHORT).show();
   }

}