自己记录,两个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();
Bundle bundle = data.getExtras();
Log.e(LOG_TAG, "get bundle =" + bundle);
if (bundle != null) {
filenameString = bundle.getString("fileName");
Log.e(LOG_TAG, "filenameString= " + filenameString);
}