使用片段通过底部导航栏关闭应用程序
Close app by bottom navigation bar using fragment
我正在使用底部导航栏。当我单击底部导航中的每个项目时,Fragment 将替换为另一个。当我想按回去时,我想退出应用程序。我觉得这很简单。
但是问题就在这里:
在每个片段中我都有按钮。如果我们点击按钮,它将替换为另一个片段。如果我按下后退按钮,我想转到底部导航栏中的上一个片段。在此之后,如果用户再次按下,应用程序应该退出。
我应该怎么办?
我应该使用onBackPressed()
吗?
我使用了此代码但无法正常工作
boolean pressBackForExit = false;
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0){
pressBackForExit = true;
}
if (pressBackForExit){
finish();
}
if (getSupportFragmentManager().getBackStackEntryCount() > 0){
getSupportFragmentManager().popBackStack();
if (getSupportFragmentManager().getBackStackEntryCount() == 0){
pressBackForExit = true;
}
}
}
如果是,告诉我怎么做?
首先你必须得到你现在所在的片段。就像你只想从 BottomFragments 返回然后将所有 BottomFragments 放在那里如果是,然后 onBackPress();
Fragment f = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container);
if (f instanceof NavBottomOneFragment ) {
onBackPressed();
}
尝试使用以下代码,将此代码放在您的 Activity Class 上。
这是双击退出应用程序的代码。
boolean doubleBackToExitPressedOnce = false;
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Press again to exit..", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
这可以通过唱两个容器来完成
一个用于背景片段,即用于选项卡切换
第二次点击片段上的按钮假设容器 ID 是 fragment_container 现在在你的 activity onBackPressed 方法中执行以下操作
@Override
public void onBackPressed() {
Fragment frag = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (frag != null){ getSupportFragmentManager().beginTransaction().remove(frag).commit();
return;
}
super.onBackPressed();
}
1.Overrideactivity的onBackPressed()
方法
public void onBackPressed() {
finish()
}
我正在使用底部导航栏。当我单击底部导航中的每个项目时,Fragment 将替换为另一个。当我想按回去时,我想退出应用程序。我觉得这很简单。
但是问题就在这里: 在每个片段中我都有按钮。如果我们点击按钮,它将替换为另一个片段。如果我按下后退按钮,我想转到底部导航栏中的上一个片段。在此之后,如果用户再次按下,应用程序应该退出。 我应该怎么办?
我应该使用onBackPressed()
吗?
我使用了此代码但无法正常工作
boolean pressBackForExit = false;
@Override
public void onBackPressed() {
if (getSupportFragmentManager().getBackStackEntryCount() == 0){
pressBackForExit = true;
}
if (pressBackForExit){
finish();
}
if (getSupportFragmentManager().getBackStackEntryCount() > 0){
getSupportFragmentManager().popBackStack();
if (getSupportFragmentManager().getBackStackEntryCount() == 0){
pressBackForExit = true;
}
}
}
如果是,告诉我怎么做?
首先你必须得到你现在所在的片段。就像你只想从 BottomFragments 返回然后将所有 BottomFragments 放在那里如果是,然后 onBackPress();
Fragment f = getActivity().getFragmentManager().findFragmentById(R.id.fragment_container);
if (f instanceof NavBottomOneFragment ) {
onBackPressed();
}
尝试使用以下代码,将此代码放在您的 Activity Class 上。 这是双击退出应用程序的代码。
boolean doubleBackToExitPressedOnce = false;
@Override
public void onBackPressed() {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "Press again to exit..", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce=false;
}
}, 2000);
}
这可以通过唱两个容器来完成 一个用于背景片段,即用于选项卡切换 第二次点击片段上的按钮假设容器 ID 是 fragment_container 现在在你的 activity onBackPressed 方法中执行以下操作
@Override public void onBackPressed() {
Fragment frag = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (frag != null){ getSupportFragmentManager().beginTransaction().remove(frag).commit();
return;
}
super.onBackPressed();
}
1.Overrideactivity的onBackPressed()
方法
public void onBackPressed() {
finish()
}