onActivityResult没有调用

时间:2015-01-30 12:59:14

标签: android-intent android-activity

我正在做一项开始第二项活动的活动。然后从该活动接收回一个字符串。虽然第二个活动开始并创建一个新的意图来发回字符串数据。 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);


        }
    }
    }

1 个答案:

答案 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没有被调用的原因。