Android intent onActivityResult不';我没打电话
我正在做一个活动,它开始了第二个活动。然后从该活动接收回一个字符串。尽管第二个活动启动并创建了一个新的意图来发回字符串数据。OnActivityResult未在第一个活动中调用。我检查了类似的问题,但没有帮助。第二次活动调用finish()后活动周期阻塞 logcat打印此行:Android intent onActivityResult不';我没打电话,android-intent,android-activity,Android Intent,Android Activity,我正在做一个活动,它开始了第二个活动。然后从该活动接收回一个字符串。尽管第二个活动启动并创建了一个新的意图来发回字符串数据。OnActivityResult未在第一个活动中调用。我检查了类似的问题,但没有帮助。第二次活动调用finish()后活动周期阻塞 logcat打印此行: "done with enterClicked().. going to onactivityresult" 但不是这一行: "Entered onActivityResult()" 关于第一项活动: static
"done with enterClicked().. going to onactivityresult"
但不是这一行:
"Entered onActivityResult()"
关于第一项活动:
static private final int GET_TEXT_REQUEST_CODE = 1;
...
Intent explicitIntent = new Intent(this, ExplicitlyLoadedActivity.class);
startActivityForResult(explicitIntent,GET_TEXT_REQUEST_CODE);
关于第二项活动:
String input=mEditText.getText().toString();
Intent explicitly=new Intent(ExplicitlyLoadedActivity.this, ActivityLoaderActivity.class);
explicitly.putExtra("mydata",input);
setResult(RESULT_OK,explicitly);
startActivity(explicitly);
finish();
Log.i(TAG,"done with enterClicked().. going to onactivityresult");
第一个活动的onActivityResult:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i(TAG, "Entered onActivityResult()");
// TODO - Process the result only if this method received both a
if(requestCode==GET_TEXT_REQUEST_CODE){
if (resultCode == RESULT_OK) {
Log.i(TAG, "Entered resultcode ok case()");
Bundle extras=getIntent().getExtras();
String weneed = extras.getString("mydata");
mUserTextView.setText(""+ weneed);
}
}
}
此代码中存在问题:
String input=mEditText.getText().toString();
Intent explicitly=new Intent(ExplicitlyLoadedActivity.this, ActivityLoaderActivity.class);
explicitly.putExtra("mydata",input);
setResult(RESULT_OK,explicitly);
startActivity(explicitly);
finish();
Log.i(TAG,"done with enterClicked().. going to onactivityresult");
在第二个活动中,您只需这样做--
不要指定任何参数,也不要调用startActivity()
,只需设置结果并完成第二个活动。
出错的是,您正在通过代码再次启动第一个活动。没有给安卓操作系统任何机会发挥自己的作用。这就是你的onActivityResult没有被调用的原因
Intent explicitly=new Intent();