如何检查BackStack是否为null

时间:2018-03-08 12:44:22

标签: java android

我想检查BackStack是否为空。 我有这样的事情:

 List<Fragment> l2 = getFragmentManager().getFragments();
        if(l2 == null){
            todo
        }

但是getFragments需要API 26,我是16

如何解决?有什么想法吗?

5 个答案:

答案 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();
        }