onActivityResult()没有在android中执行

bha*_*avg 2 android intentfilter android-intent android-activity onactivityresult

我是一名经验丰富的java程序员,迈出了Android开发的第一步.我的问题很简单,我的onActivityResult()没有在主活动中执行.这就是我做的.

在MainActivity的onCreate方法中,

Intent intent = new Intent(MainActivity.this, NewScreen.class);

startActivityForResult(intent,RESULT_OK);
Run Code Online (Sandbox Code Playgroud)

我确实覆盖了MainActivity中的onActivityResult方法,

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    Log.d("Debug", "Received");
}
Run Code Online (Sandbox Code Playgroud)

在NewScreen活动中,

Intent intent = new Intent(NewScreen.this, MainActivity.class);

this.setResult(RESULT_OK,intent);

Log.d("Debug", "Setting the Result");

finish();
Run Code Online (Sandbox Code Playgroud)

我的清单文件是

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".MainActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name="NewScreen"></activity>

</application>
Run Code Online (Sandbox Code Playgroud)

我已阅读每个论坛并尝试了一切.请帮帮我们.

提前致谢,

ina*_*ruk 5

您用作RESULT_OK请求代码.值为RESULT_OK负(-1实际).这就是你没有收到NewScreen活动结果的原因.如果你查看文档的requestCode参数,它会说:

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

因此,您应该定义非负请求代码并将其用于startActivityForResult.这是一个例子:

public class MainActivity extends Activity
{

    static final int REQUEST_CODE = 13;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
         //...             

         Intent intent = new Intent(MainActivity.this, NewScreen.class);
         startActivityForResult(intent, REQUEST_CODE);
    }
}
Run Code Online (Sandbox Code Playgroud)