ActivityについてstartActivity ForResult(Intent,int)使用
1799 ワード
最初は起動後のActivityのonPause()でsetResult(int,Intent)を呼び出して戻りのIntentを設定していましたが、戻りのActivityのonActivity Result(int,int,Intent)で得られたIntentは空の値NULLです.
これは起動コードです
結果が返されるコールバックメソッドの書き換えです
次はエラーsetResult(int,Intent)コードです.
理由を見つけたら、上記のコードをonCreate(Bundle)に変更し、Buttonを追加してonClick(View)を追加します.
これは起動コードです
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainActivity.this, MainActivity2.class);
Bundle sendBundle = new Bundle();
sendBundle.putCharSequence("str", "From MainActivity.class");
intent.putExtra("sendBundle", sendBundle);
startActivityForResult(intent,0x1001);
}
});
Log.i(TAG, "onCreated");
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(data!=null){
String str = data.getStringExtra("return");
Log.i(TAG,str+" "+requestCode+" "+resultCode);
if(resultCode==0x1001){
TextView textView = (TextView)findViewById(R.id.textView1);
textView.setText(str);
}
}else{
Log.i(TAG,"data is null");
}
}
結果が返されるコールバックメソッドの書き換えです
次はエラーsetResult(int,Intent)コードです.
protected void onPause(){
Intent intent = new Intent();
intent.putExtra("return", "Return me");
setResult(0x1001, intent);
}
理由を見つけたら、上記のコードをonCreate(Bundle)に変更し、Buttonを追加してonClick(View)を追加します.
findViewById(R.id.button2).setOnClickListener(new OnClickListener(){
public void onClick(View v){
Intent intent = new Intent();
intent.putExtra("return", "Return me");
setResult(0x1001, intent);
finish(); // , , Intent Activity , Activity
}
});