我有2个活动,其中第二个活动返回来自用户的文本输入并分别更改文本视图。 但是,当我从第二个活动传递文本输入时,它们将返回为空。
第二个活动的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();
}
});
}
在第二个活动完成后调用的方法
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
TextView txt = (TextView)findViewById(R.id.txt_one);
txt.setText(getIntent().getStringExtra("str3"));
}
答案 0 :(得分:2)
尝试以下
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
}
您的edittext也是如此。声明为类成员并在onCreate
中初始化无需每次按下按钮时初始化
编辑:
也可以使用以下
public Editable getText ()
在API级别1中添加
返回TextView正在显示的文本。如果使用BufferType.SPANNABLE或BufferType.EDITABLE参数调用setText(),则可以将此方法的返回值分别转换为Spannable或Editable。注意:不应修改返回值的内容。如果你想要一个可修改的,你应该先制作自己的副本。
http://developer.android.com/reference/android/widget/EditText.html
String value1 = txt1.getText().toString();
i.putExtra("str3", value1);
答案 1 :(得分:0)
1。
使用i.putExtra("str4", txt2.getText().toString());
和i.putExtra("str3", txt1.getText().toString());
<强> 2 强>
使用Intent data
中收到的onActivityResult()
代替 getIntent()
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
TextView txt = (TextView)findViewById(R.id.txt_one);
txt.setText(data.getStringExtra("str3"));
}
答案 2 :(得分:0)
public void onActivityResult(int requestCode,int resultCode, Intent data)
{
TextView txt = (TextView)findViewById(R.id.txt_one);
txt.setText(getIntent().getStringExtra("str3"));
}
而不是使用以下代码
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == YourRequestCode) {
if (resultCode == YourResultCode) {
TextView txt = (TextView)findViewById(R.id.txt_one);
txt.setText(data.getStringExtra("str3"));
}
}
}