我在Android Studio中有点困惑。 我之前没有在Eclipse中看到过这种错误。
例:FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction tf = fragmentManager.beginTransaction(); Fragment oldFragment = fragmentManager.findFragmentByTag(AddDialogFragment.TAG);
这段代码工作正常,但是fragmentManager.beginTransaction(); 突出显示并说:方法调用’fragmentManager.beginTransaction’可能会产生’java.lang.NullPointerException’较少…(Ctrl + F1)
此检查报告指定检查范围中始终为true或false的条件,并根据代码的数据流分析指出可能抛出RuntimeException的位置。 此检查还报告Nullable / NotNull合同违规。 可以配置支持合同的注释(默认情况下,@ Nullable / @NotNull将使用annotations.jar中的注释)
我以前要检查Null吗?
FragmentManager fragmentManager = getFragmentManager(); if(fragmentManager != null) FragmentTransaction tf = fragmentManager.beginTransaction(); Fragment oldFragment = fragmentManager.findFragmentByTag(AddDialogFragment.TAG);
我以前从未在任何Tut或例子中看过这个。 如果这是一个愚蠢的问题而不是抱歉,但我还是初学者:)。
从我所看到的,Android Studio显示有关潜在NullPointerExceptions警告,即使对于永远不会返回null的方法。 我只是忽略了其中的一些,但仔细检查所有这些是有用的,因为有时我错过了一个重要的。
如果你看一下android源代码,很容易看到getFragmentManager()永远不会返回null:
public FragmentManager getFragmentManager() { return mFragments; }
mFragments只在整个类中分配一次:
final FragmentManagerImpl mFragments = new FragmentManagerImpl();