3

我有 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"));
}
4

3 回答 3

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);
于 2013-08-08T09:00:52.140 回答
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"));
}
于 2013-08-08T08:56:12.337 回答
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"));

        }
    }
}
于 2013-08-08T08:58:07.187 回答