2

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

MainActivity'onCreate方法中,

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

startActivityForResult(intent,RESULT_OK);

我确实覆盖了以下onActivityResult方法MainActivity

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

    Log.d("Debug", "Received");
}

NewScreen活动中:

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

this.setResult(RESULT_OK,intent);

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

finish();

我的清单文件:

<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>
4

3 回答 3

5

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

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);
    }
}
于 2011-06-25T20:13:08.017 回答
4

在 NewScreen 活动中,尝试使用 Intent 的默认(无参数)构造函数...

Intent intent = new Intent();

setResult(RESULT_OK,intent);

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

finish();

编辑:此外,您发送给活动的“请求代码”可能会比其他值更好RESULT_OK,例如..

startActivityForResult(intent, 1234);
于 2011-06-25T18:45:15.387 回答
1

你确定它没有被调用。尝试打印出结果代码。如果它为零,则可能意味着结果被取消,给您一种方法实际上什么都不做的错觉。

于 2011-06-25T18:52:35.793 回答