我有 2 个 Activity ,其中第二个 Activity 返回用户的文本输入并分别更改 TextView 。 但是,当我从第二个 Activity 传递文本输入时,它们返回为空。
返回主 Activity 的第二个 Activity 的 onClick 方法:
public void onClick(View v)
{
Intent i = new Intent();
EditText txt1 = (EditText)findViewById(R.id.txt_name);
i.putExtra("str3", txt1.getText());
EditText txt2 = (EditText)findViewById(R.id.txt_address);
i.putExtra("str4", txt2.getText());
setResult(RESULT_OK, i);
finish();
}
});
}
第二个 Activity 完成后调用的方法
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
TextView txt = (TextView)findViewById(R.id.txt_one);
txt.setText(getIntent().getStringExtra("str3"));
}
最佳答案
试试下面的
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
txt.setText(getIntent().getStringExtra("str3"));
}
同时将所有初始化移动到 onCreate
。
TextView txt ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
txt = (TextView)findViewById(R.id.txt_one);
... // rest of the code
}
同样适用于您的编辑文本。声明为类成员并在 onCreate
中初始化 无需每次单击按钮时都初始化
编辑:
也可以使用下面的
public Editable getText()
在 API 级别 1 中添加
返回 TextView 显示的文本。如果使用 BufferType.SPANANABLE 或 BufferType.EDITABLE 参数调用 setText(),您可以将此方法的返回值分别转换为 Spannable 或 Editable。注意:不要修改返回值的内容。如果你想要一个可修改的,你应该先制作你自己的副本。
http://developer.android.com/reference/android/widget/EditText.html
String value1 = txt1.getText().toString();
i.putExtra("str3", value1);
关于android - 使用 Intent 将字符串返回到先前的 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18121655/