相关疑难解决方法(0)

更好的方法只调试断言代码

我正在编写我的第一个Android应用程序,我很自由地使用junit.framework.Assert中的asserts()

我想找到一种方法来确保断言只被编译到调试版本中,而不是发布版本中.

我知道如何从清单查询android:debuggable属性,所以我可以创建一个变量,并在以下fashon中完成此操作:

static final boolean mDebug = ...

if(mDebug)Assert.assertNotNull(view);

有一个更好的方法吗?即我不想在每个断言中使用if().

谢谢

android

8
推荐指数
2
解决办法
7895
查看次数

"添加方法合同......"Android Studio的主要用途是什么?

我得到以下选项,如"添加方法合同'setDisplayHomeAsUpEnabled'",我知道检查是因为NPE可以扔掉getSupportActionBar()但我想知道方法合同的实际使用

在此输入图像描述

如果我在该选择上按Enter键,我将得到:

在此输入图像描述

任何分享?任何帮助?它会赞赏:)

android annotations nullpointerexception contract

7
推荐指数
1
解决办法
2232
查看次数

有关活动引用的Android Studio 3.0棉绒警告

将项目升级为使用API​​级别为27.0.0(Android 8.1)的Android Studio 3.0之后,我收到了许多与片段中使用getActivity()有关的新的掉线警告(我认为这很好)。

例子:

((AppCompatActivity) getActivity()).setSupportActionBar(toolbar);

getActivity().getMenuInflater().inflate(R.menu.pavingreport_dialog_menu, menu);
Run Code Online (Sandbox Code Playgroud)

这两个示例都抱怨存在空异常。

例:

Method invocation 'getMenuInflater' may produce 'java.lang.NullPointerException'
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过将活动添加为字段并在onCreate或其他过程中对其进行初始化来解决此问题,但这只会删除警告...

问题:

  1. 使用getActivity来指代Activity不是可行的方法吗?什么是最佳做法?
  2. 这是我可以忽略的AS中的“错误”吗?

android lint android-studio-3.0

2
推荐指数
1
解决办法
845
查看次数