关于Activity.startActivityForResult(Intent ,int )使用

    起初是在启动后的Activity中的onPause()中调用setResult(int ,Intent)来设置返回的Intent,但是在返回后的Activity中的onActivityResult(int,int,Intent)得到的Intent是空值NULL。

这是启动代码

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
	}
});


转载于:https://my.oschina.net/asd1614/blog/495642

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值