我有一個有三個片段的活動。我還重寫了我的活動onBackPressed()
方法。當用戶導航到我的任何片段時,會出現後退按鈕的標準行爲。除了當我發射一個不是來自其「父母」的片段時。Activity.finish()沒有完成活動
想象一下:我的活動沒有用戶界面。它只有5個片段。當用戶在fragment1
,fragment2
或fragment3
上並按下後退按鈕時,他必須離開應用程序(即,通過僅在應用程序具有的活動中調用finish())。 Fragment1Child
概念上是fragment1
和fragment2Child
的「孩子」是fragment2
的「孩子」。當從fragment1
或fragment2
到他們的孩子,並按下後,我得到預期的行爲。但是,我從fragment3
到fragment2Child
然後按回我正確地與fragment2
一起呈現。現在當我按回Activity.finalize()
方法我已經執行,但應用程序是不是關閉。相反,我回到fragment3
!
下面是檢查是什麼所示的電流片段並決定做什麼相應
@Override
public void onBackPressed() {
Log.d(TAG, "MainACtivity.onBackPressed()");
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
Log.d("NIBHA", " Drawere ++++++++++++++++++++++");
mDrawerLayout.closeDrawers();
} else {
Fragment fragment = getSupportFragmentManager().findFragmentById(
R.id.fragment_container);
Log.d("Nibha", "" + fragment);
if (fragment instanceof DeliveryOrder
|| fragment instanceof IncomingShipment
|| fragment instanceof RentalAgreement) {
Log.d(TAG, "EXITING APP");
finish();
return;
}
if (fragment instanceof IncomingShipmentDetail
&& getIntent().getAction().equals("RA")) {
Log.d(TAG, "IS DETAIL CALLED FROM RA");
transaction.replace(R.id.fragment_container,
new IncomingShipment());
transaction.commit();
}
super.onBackPressed();
}
}
您是否嘗試刪除'super.onBackPressed();'? –
剛剛嘗試過。當我必須完成()應用程序時,我仍然被扔進fragment3。 –
你能看到logcat中的「EXITING APP」嗎? –