我有一个有三个片段的活动。我还重写了我的活动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”吗? –