簡體   English   中英

resultCode始終為0

[英]resultCode is always 0

我正在嘗試在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>
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.

finish()實際上不是您在活動生命周期中獲得的回調之一。 您可以確認自己在MyActivity2中正在調用finish()嗎?

如果您不是自己調用finish(),則應在MyActivity2的onDestroy()中調用setResult()。

希望這可以幫助!

如果您為Activity調用finish(),則結果始終為0( http://developer.android.com/reference/android/app/Activity.html#finish()

存在另一種方法:finishActivity(int requestCode)。

但是,如果您想將Extras放入Result中,我們需要其他方法。 那么,為什么要覆蓋finish()方法呢? 您從哪里調用此方法?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM