使用意图将字符串返回到先前的活动

时间:2013-08-08 08:46:48

标签: android android-intent

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

3 个答案:

答案 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"));

        }
    }
}