没有调用Android onActivityResult()

时间:2015-07-27 18:26:03

标签: android

我现在已经坚持这个问题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,我尝试了没有额外的意图,但没有一个工作!

感谢您的时间

3 个答案:

答案 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);
    ...
 }