resultCode始终为0

时间:2011-11-16 09:22:56

标签: java android

我正在尝试在我的onActivityResult函数中使resultCode正常。然而,它一直回到0.我已经花了几天时间,并且无法弄清楚为什么它不起作用。这是我的代码。如果有人可以帮助我,我将非常感激,谢谢。

我的Activity1类:

    private class MyTask extends AsyncTask<String, Void, String> {
        @Override
        protected String doInBackground(String... urls) {
                // process
            return result;
        }

        @Override
        protected void onPostExecute(String result) {
            Intent i = new Intent(Activity1.this, Activity2.class);
            i.putExtra("Value1", "This value one for ActivityOne ");
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivityForResult(i, REQUEST_CODE);
            textView.setText(result);
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
                       // do something
                }
        }

我的活动2课程:

    @Override
    public void finish() {
        Intent data = new Intent();
        data.putExtra("returnKey1", "return 1");
        setResult(RESULT_OK, data);
        super.finish();
    }

我的清单:

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Activity1"
                  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=".Activity2"
                  android:label="@string/app_dialog_name" 
                  android:launchMode="singleTop" 
                  android:excludeFromRecents="true"
              android:taskAffinity="" 
          android:theme="@android:style/Theme.Dialog">
        </activity>
    </application>

3 个答案:

答案 0 :(得分:2)

i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

是问题所在。根据文件:

This flag can not be used when the caller is requesting a result from the activity being launched.

答案 1 :(得分:1)

finish()实际上不是您在活动生命周期中获得的回调之一。你可以确认你在MyActivity2中自己调用了finish()吗?

如果你不是自己调用finish(),你应该在MyActivity2的onDestroy()中调用setResult()。

希望这有帮助!

答案 2 :(得分:-1)

如果您为活动调用finish(),结果将始终为0(http://developer.android.com/reference/android/app/Activity.html#finish()

还有另一种方法:finishActivity(int requestCode)。

但是如果你想在结果中添加额外内容,我们需要其他方式。那么为什么要覆盖finish()方法呢?从哪里来称呼这种方法?