调用finish()时,Activity会先启动第一个活动,而不是返回上一个活动

时间:2012-03-14 22:44:11

标签: android android-activity android-preferences

我的应用程序中有这样的流程:

InitialActivity - > PreferencesScreen - > AnotherActivity

其中InitialActivity和AnotherActivity是仅扩展android.app.Activity的普通类。 PreferenceScreen扩展android.preference.PreferenceActivity,它是一个单例类。

当我在AnotherActivity中完成并希望返回到PreferencesScreen时,我在其中使用了finish(),但它不是返回PreferencesScreen,而是打开另一个InitialActivity实例。当我按下后退按钮时,我可以看到我之前创建的PreferenceScreen和InitialActivity屏幕。

那么您认为这会导致这种奇怪的情况?它是关于AnotherActivity类,还是关于PreferenceScreen是单例?提前谢谢。

编辑:以下是在AnotherActivity上调用finish()的代码:

private class ConnectServer extends AsyncTask<String, Void, Void> {

    ProgressDialog dialog;

    @Override
    protected void onPreExecute() {
        dialog = ProgressDialog.show(AnotherActivity.this,
                "", "Please wait...", true, false);
    }

    @Override
    protected Void doInBackground(String... params) {

        // Do some work, send some data to server

        return null;
    }

    @Override
    protected void onPostExecute(Void v) {
        Toast.makeText(AnotherActivity.this, "Successful!", Toast.LENGTH_SHORT).show();
        dialog.dismiss();
        finish();
    }

}

以下是打开AnotherActivity的PreferenceListener:

new OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference preference) {

                startActivity(new Intent(PreferenceScreen.this, AnotherActivity.class));
                return true;
            }
        }

AndroidManifest.xml中的InitialActivity:

    <activity android:name=".InitialActivity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

0 个答案:

没有答案