Activity传值时防止onActivityResult方法中的data为null

自己记录,两个Activity传值时,onActivityResult中的Intent data中获取的值为null,代码如下,解决办法后带:

public final static REQUEST_CODE = 10001;
public final static RESULT_CODE = 10002;

activity1中:

finder1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        Intent intent1 = new Intent(MainActivity.this, MyActivity.class);
        startActivityForResult(intent1, REQUEST_CODE);
    }
});

传值到另一个类 activity2中:

Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("fileName", file.getAbsolutePath());
intent.putExtras(bundle);
setResult(RESULT_CODE, intent);
finish();

返回activity1方法的finish()方法一定要有,这样才能传值回去; 
再回到activity1通过onActivityResult方法进行各种操作以及获取data中的值:

protected void onActivityResult(int requestCode, int resultCode,Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_CODE && requestCode == REQUEST_CODE) {
        if (data == null||"".equals(data)) {
        return;
    } else {
        Bundle bundle = data.getExtras();
        Log.e(LOG_TAG, "get bundle =" + bundle);
        if (bundle != null) {
            filenameString = bundle.getString("fileName");
            Log.e(LOG_TAG, "filenameString= " + filenameString);
        }
    }
}

需要注意的地方:

1:

startActivityForResult(intent1, REQUEST_CODE);

2:

<pre name="code" class="java">Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("fileName", file.getAbsolutePath());
intent.putExtras(bundle);
setResult(RESULT_CODE, intent);
finish();


 3: 

Bundle bundle = data.getExtras();
        Log.e(LOG_TAG, "get bundle =" + bundle);
        if (bundle != null) {
            filenameString = bundle.getString("fileName");
            Log.e(LOG_TAG, "filenameString= " + filenameString);
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值