我正在做一项开始第二项活动的活动。然后从该活动接收回一个字符串。虽然第二个活动开始并创建一个新的意图来发回字符串数据。 OnActivityResult未在第一个活动中调用。我检查了类似的问题,但他们没有帮助。第二个活动调用finish()
后活动周期停滞logcat打印此行:
"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);
}
}
}
答案 0 :(得分:-1)
问题在于此代码:
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");
在您的第二项活动中,您只需要这样做 -
Intent explicitly=new Intent();
不指定任何参数,也不要调用startActivity()
也只需设置结果并完成第二个活动。
出现问题的是您的代码再次开始您的第一个活动。不给Android OS任何机会发挥其作用。这就是为什么你的onActivityResult没有被调用的原因。