未从子活动调用OnActivityResult

时间:2015-05-10 01:58:51

标签: android android-activity

我有一个在课堂上开始的儿童活动:

public class CaptureSignature extends Activity {
 .....
}

它在清单中作为一个活动,并从ActionBarActivity的按钮开始,如下所示:

 public void captureSignatureRef(View v) {
    Intent intent = new Intent(this, CaptureSignature.class);
    intent.putExtra("Source", "Ref");
    startActivityForResult(intent, RESULT_OK);
}

当我完成CaptureSignature时,我按此按钮将结果发送回父活动:

 mDone.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent();
            intent.putExtra("Source", Source);
            setResult(RESULT_OK, intent);
            finish();
        }
    });

它在调试时调用,并且没有问题。但我的父活动的函数从未被调用,没有调试方法,没有任何东西:

 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        String source = data.getStringExtra("Source");
        //do something here


    }

}

我尝试将子活动更改为ActionBarActivity,但它在模拟器上崩溃,并在初始化时没有任何解释或抱怨。有任何想法吗?

2 个答案:

答案 0 :(得分:3)

我看到的一件事是,您必须在启动Activity时发送自己的Activity标识符

public static int CHILD_ACTIVITY = 123;

public void captureSignatureRef(View v) {
    Intent intent = new Intent(this, CaptureSignature.class);
    intent.putExtra("Source", "Ref");
    startActivityForResult(intent, CHILD_ACTIVITY);
} 

答案 1 :(得分:1)

startActivityForResult的方法签名:

public void startActivityForResult (Intent intent, int requestCode)

requestCode:如果> = 0,当活动退出时,此代码将在onActivityResult()中返回。

由于您传入的RESULT_OK等于-1,因此您无法收到回调。