У меня в приложении такой поток:
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>