3

2 番目のアクティビティがユーザーからのテキスト入力を返し、それぞれテキストビューを変更する 2 つのアクティビティがあります。ただし、2 番目のアクティビティからテキスト入力を渡すと、それらは空として返されます。

メイン アクティビティに戻る 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();
        }
    });
}

2 番目のアクティビティが終了した後に呼び出されるメソッド

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 が表示しているテキストを返します。setText() が BufferType.SPANNABLE または BufferType.EDITABLE の引数で呼び出された場合、このメソッドからの戻り値をそれぞれ 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 dataReceived inを 使用する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 に答える