当我使用startactivityforresult时遇到问题,我在这个问题上有两个条件
1. activity A -> activity B = onActivityResult in activity A called //success
2. activity A -> activity B -> Call Camera = onActivityResult called only in Activity B, activity A isn't called
我在活动A中使用此代码
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode != RESULT_CANCELED){
Bundle b = data.getExtras();
String data = b.getString("data");
}
}
活动B中的
String fileName;
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
selectedPath=getPath(data.getData());
File source= new File(selectedPath);
fileName=source.getName();
}
}
活动B中的我有完成活动B的按钮,然后回调活动A并带来值fileName
这里是代码
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent i = new Intent();
i.putExtra("data", fileName);
setResult(RESULT_OK,i);
finish();
}
});
我希望在活动B activity B
之后activity A
返回call camera intent
的值(在案例2中)?
我是如何实现这一目标的?感谢。
答案 0 :(得分:0)
您是否在活动B上调用了setResult(RESULT_OK)并在finish()之前将数据包装在intent中?
答案 1 :(得分:0)
调用相机后,onActivityResult()
将调用activity B
而非activity A
,因为调用相机的活动是活动A.而只是覆盖onActivityResult()
活动B并调用setResult()
将结果传播到活动A.