![](/img/trans.png)
[英]Android: How to hide bottom sheet when back button is pressed in fragment?
[英]How to add back pressed button in diffeent fragment?
我使用帶有 3 個主要 Fragment 的 BottomNavigationView,例如Fragment [A], [B], [C]
。 並且Fragment [A]
是默認 Fragment,如果Fragment [B]
或[C]
按back button
必須返回Fragment A
。 在fragment [B]
中,我添加按鈕以獲取另一個片段,只需將其稱為Fragment [D]
,但如果在片段 D 中我按下后退按鈕應用程序返回fragment [A]
。
那么當fragment [D]
按下返回按鈕時如何返回Fragment [B]
?
您可以使用片段堆棧。 在活動中實現 onBackPressed()。
@Override
public void onBackPressed() {
//Work with fragments stack...
int count = getSupportFragmentManager().getBackStackEntryCount();
if (count == 0) {
super.onBackPressed();
} else {
getSupportFragmentManager().popBackStack();
}
}
Fragment 中沒有 onBackPressed function。
這就是為什么你應該為 backPressed 事件定義回調接口。
public interface IFragment {
boolean onBackPressed();
}
然后,您應該實現您的片段 [A]、[B]、[C]、[D]。
@Override
public boolean onBackPressed() {
return true;
}
你應該在 Fragments 的宿主活動中處理它。
@Override
public void onBackPressed() {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
boolean handled = false;
for(Fragment f : fragments) {
if(f instanceof IFragment) {
handled = ((IFragment) f).onBackPressed();
if(handled) {
FragmentManager fm = getSupportFragmentManager();
for(String name : fragmentNames) {
fm.popBackStack(name, 0);
}
fm.beginTransaction().commit();
}
}
}
super.onBackPressed();
}
我剛剛實現了代碼,讓你知道你必須知道什么。
祝你好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.