好的,我有創建以下回棧的應用程序:Android的後退按鈕導致根,而不是先前的活動
- 詳細活動
- 主要活動
- 登錄活動
它工作正常的設備有足夠的內存,但在舊的我遇到了一個奇怪的問題。在這樣的設備上,每個新的活動觸發前一個的破壞以獲得足夠的內存。但是,按詳細信息活動中的後退按鈕可將用戶導向登錄活動,而不是主活動。我使用默認行爲(清單文件中沒有Intent標誌或與棧相關的活動屬性)。根據我對documentation的理解,後退按鈕的默認行爲是讓您回到上一個活動,而不是根本活動。我錯過了什麼?
編輯: 這裏是我在清單申報我的活動:
<activity
android:name=".LoginActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_login"
android:theme="@android:style/Theme.Holo.Light.NoActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity
android:name=".BoardViewActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/activity">
</activity>
<activity
android:name=".TaskDetailsActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:label="@string/title_activity_task_details">
</activity>
LoginActivity開始BoardViewActivity:
Intent intentBoardView = new Intent(this, BoardViewActivity.class);
intentBoardView.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intentBoardView);
finish();
然後BoardViewActivity的片段開始TaskDetailsActivity:
Intent intent = new Intent(getActivity(), TaskDetailsActivity.class);
startActivityForResult(intent, REQUEST_CODE_TASKDETAILS);
然後在TaskDetailsActivity中:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case (android.R.id.home):
TaskDetailsActivity.this.setResult(RESULT_CANCELED);
finish();
return true;
case (R.id.action_save):
save();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
如果我使用後退按鈕或軟件家(上)不要緊按鈕 - 它總是可以追溯到LoginActivity。
你如何申報你的活動並調用新的實例?你能向我們展示你的清單嗎?你如何調用MainActivity和Details Activity? –
增加了一些代碼。 – AXE