Действие начинает первое действие при вызове finish () вместо возврата к предыдущему - PullRequest
1 голос
/ 15 марта 2012

У меня в приложении такой поток:

InitialActivity -> PreferencesScreen -> AnotherActivity

где InitialActivity и AnotherActivity - это обычные классы, которые просто расширяют android.app.Activity. PreferenceScreen расширяет android.preference.PreferenceActivity и это одноэлементный класс.

Когда я закончу в AnotherActivity и хочу вернуться к PreferencesScreen, я использую в нем метод finish (), но вместо возврата к PreferencesScreen просто открывает другой экземпляр InitialActivity. Когда я нажимаю кнопку «Назад», я вижу свои ранее созданные экраны PreferenceScreen и InitialActivity.

Так что, по вашему мнению, вызывает эту странную ситуацию? Это из-за класса AnotherActivity или из-за того, что PreferenceScreen является одиночным? Заранее спасибо.

РЕДАКТИРОВАТЬ: Вот код, который вызывает finish () для AnotherActivity:

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();
    }

}

и вот PreferenceListener, который открывает AnotherActivity:

new OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference preference) {

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

InitialActivity в AndroidManifest.xml:

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