我想检查BackStack是否为空。 我有这样的事情:
List<Fragment> l2 = getFragmentManager().getFragments();
if(l2 == null){
todo
}
但是getFragments
需要API 26,我是16
如何解决?有什么想法吗?
答案 0 :(得分:2)
不确定Android SDK是否支持完整的JDK 8功能,但是检查无效的最佳方法是使用对象类方法 isNull ,它位于util包下。
这样你可以检查无效:
if(!Objects.isNull(obj)){
// business logic
}
我只是在这里观察其他答案,因为我有一个建议,如列表级别无效检查(我猜你使用返回列表数据的方法)我们还应检查对象级别无效。使用Java 8,我们可以通过 Stream api 非常顺利地完成它,下面我分享了它的示例代码:
List<Integer> ls = new ArrayList<Integer>();
if(ls.stream().allMatch(x-> x==null)){
// Todo
}
希望这会有所帮助!!
答案 1 :(得分:2)
使用此行
if(getSupportFragmentManager().getBackStackEntryCount()>0)
{
--- your code here
}
答案 2 :(得分:1)
你可以在推送片段时使用片段堆栈。
Stack<Fragment> fragmentStack
并检查
if(fragmentStack.size == 1)
答案 3 :(得分:1)
使用getBackStackEntryCount()来获取计数。如果它为零,则在后台堆栈中没有任何意义。
喜欢getFragmentManager().getBackStackEntryCount()
或者喜欢
if (getFragmentManager().getBackStackEntryCount() == 1) {
// Current fragment is last one in stack
}
注意:API级别P中的FragmentManager class was deprecated 使用支持库FragmentManager可以在所有设备上保持一致的行为并访问Lifecycle。
因此,如果您正在开发新应用程序或可以更新现有类,请使用getSupportFragmentManager()。为此,您需要使用android.support.v4.app.Fragment
答案 4 :(得分:1)
使用以下代码
int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackEntryCount == 0) {
goBack(); // write your code to switch between fragments.
} else {
super.onBackPressed();
}