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

来源:互联网 发布:网络贩枪 编辑:程序博客网 时间:2024/06/06 08:47

自己记录,两个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);        }

0 0
原创粉丝点击