我的应用程序中有这样的流程:
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>