我有一个在课堂上开始的儿童活动:
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,但它在模拟器上崩溃,并在初始化时没有任何解释或抱怨。有任何想法吗?
答案 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,因此您无法收到回调。