我现在已经坚持这个问题3个小时了,甚至在阅读了互联网上的所有答案之后我找不到解决方案!
我从活动A(扩展活动)调用活动B(扩展FragmentActivity):
从活动A,调用活动B:
floatingActionButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, NewEventActivity.class);
startActivityForResult(i, 1);
}
});
没什么可怕的......
然后在活动B中:
Bundle mBundle = new Bundle();
mBundle.putParcelable("event", new MyEvent(eventName.getText().toString(), place.getAddress().toString(), place.getLatLng().latitude, place.getLatLng().longitude, "Test", 4, R.drawable.ic_launcher));
Intent mIntent = new Intent();
mIntent.putExtras(mBundle);
setResult(2, mIntent);
finish();
这是来自Activity A的onActivityResult(),我甚至看不到第一个Log。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("TAG", "onActivityResult, requestCode: " + requestCode + ", resultCode: " + resultCode);
if (resultCode == RESULT_OK) {
MyEvent event = data.getExtras().getParcelable("event");
Log.e("tag", event.getName());
RVAdapter adapter = new RVAdapter(MainActivity.this, events);
rv.setAdapter(adapter);
events.add(event);
emptyEvents.setVisibility(View.GONE);
}
}
我在清单中没有singleInstance,我在活动B中尝试了getIntent(),requestCode大于0,我尝试了没有额外的意图,但没有一个工作!
感谢您的时间
答案 0 :(得分:0)
RESULT_OK的常量为-1
,你做
setResult(2, mIntent);
如果您引用了这样的“魔术数字”,那么你会帮自己一个忙。通过他们的常名如
setResult(RSULT_OK, mIntent);
答案 1 :(得分:0)
将2更改为RESULT_OK。
活动B改变
setResult(2, mIntent);
到
setResult(RESULT_OK, mIntent);
和onActivityResult
if (resultCode == RESULT_OK) {
if (requestCode == 1) {
//your code
}
}
答案 2 :(得分:0)
可能你忘记了这一行
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
...
}