当isVisible时如何关闭一个片段 [英] How to close one fragment when isVisible
问题描述
你好,我有一个片段活动.当我点击图标或类似的东西时,我只能打开一个片段但是我想用OnBackPressed方法关闭一个片段(或隐藏).
Hello i having an activity with fragment. I can just open one fragment when i click on icon or something like this But i want to close a fragment(or hide) with OnBackPressed method.
我创建了这个:
private void onBackPressedInFragments(){
if(backgroundSelectFragment != null && backgroundSelectFragment.isVisible())
backgroundSelectFragment.getActivity().onBackPressed();
}
但是当我打开一个片段并单击Phone中的backbutton时,我只是关闭了该应用程序.我的应用程序有一个活动和2个片段:
but when i open a fragment and click backbutton in Phone i just close the application. My Application have one activity and 2 fragments:
我在这里创建并显示片段:
Here i create and showing the fragment:
backgroundBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (backgroundSelectFragment == null) {
backgroundSelectFragment = new BackgroundSelectFragment();
FragmentManager fm = getFragmentManager();
fm.beginTransaction()
.add(R.id.main_relative, backgroundSelectFragment, "background")
.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out)
.show(backgroundSelectFragment)
.commit();
} else {
if (backgroundSelectFragment.isHidden()) {
showFragmentBackground();
} else {
hideFragmentBackground();
}
}
}
});
有什么主意吗?
推荐答案
覆盖活动中的 onBackPressed
.如果Backstack中有除 popBackStack()
之外的任何片段,否则只需 finish()
您的活动即可.
Override onBackPressed
in your activity. If there is any fragment in backstack than popBackStack()
otherwise simply finish()
your activity.
private boolean allowedToExit = false; // class level
@Override
public void onBackPressed() {
int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
// this is the last item
if (backStackEntryCount == 1) {
if (allowedToExit)
finish();
else {
allowedToExit = true;
Toast.makeText(this, "Press again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
allowedToExit = false;
}
}, 1000);
return;
}
}
// we have more than 1 fragments in back stack
if (backStackEntryCount > 1) {
getSupportFragmentManager().popBackStackImmediate();
// getSupportFragmentManager().beginTransaction().commit();
} else
super.onBackPressed();
}
这篇关于当isVisible时如何关闭一个片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!