我尝试从第二个活动中获取数据,因此我使用startActivity方法来实现此目标。
final EditText editText=(EditText)findViewById(R.id.edit);
final String text=editText.getText().toString();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent=new Intent();
intent.setData(Uri.parse(text);
setResult(RESULT_OK,intent);
finish();
}
});
让我感到困惑的是,当我把“text”放在Uri.parse()中时,它不起作用,所以我改为Uri.parse(editText.getText()。toString),它只是起作用。
那么他们之间究竟有什么区别?
答案 0 :(得分:1)
因为它会有不同的价值:
您将此代码置于外的onClick
:
final String text=editText.getText().toString();
因此,Uri.parse(text)
会在onClick
发生之前返回文字。
但是如果您使用Uri.parse(editText.getText().toString)
,它会在onClick
调用(实时)时解析文本。
答案 1 :(得分:0)
既然你这样做了:
final String text=editText.getText().toString();
final
关键字“冻结”文本的值(可能是一个空字符串,因为它看起来像是在init函数中)。因此,只要您在text
内使用onClick()
,就会引用text
的冻结值。如果您希望在单击按钮时显示当前值editText
,则需要获取onClick()
内的值:
intent.setData(Uri.parse(editText.getText().toString()));
请注意,您需要final
的{{1}}关键字,否则您将无法在editText
内使用它。