MainActivity.java
我MultiChoiceModeListener在这个类中实现了以下是代码:
上listView:
listView.setMultiChoiceModeListener(MainActivity.this);
listView.setChoiceMode(listView.CHOICE_MODE_MULTIPLE_MODAL);
@Override
public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
switch (arg1.getItemId()) {
case R.id.save:
// Close CAB
arg0.finish();
return true;
case R.id.saveto:
// Close CAB
arg0.finish();
return true;
default:
return false;
}
}
@Override
public boolean onCreateActionMode(ActionMode arg0, Menu arg1) {
arg0.getMenuInflater().inflate(R.menu.save_menu, arg1);
return true;
}
@Override
public void onDestroyActionMode(ActionMode arg0) {
listadaptor.removeSelection();
}
@Override
public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
return false;
}
@Override
public void onItemCheckedStateChanged(ActionMode arg0, int arg1, …Run Code Online (Sandbox Code Playgroud) 我知道这很奇怪,但这就是我所拥有的.
我正在编写一个单元测试来检查我的Android应用程序的逻辑.在测试执行期间,我发现它在该行上失败:
if (!TextUtils.isEmpty(fromFile))
在该if语句之前,fromFile等于""(空字符串),但它以某种方式传递给它,并与另一个不期望空字符串的逻辑断开.
潜入调试我看到它fromFile.isEmpty()返回正确的结果,但TextUtils.isEmpty(fromFile)说它不是空的.
打开源代码,我看到:
public static boolean isEmpty(@Nullable CharSequence str) {
if (str == null || str.length() == 0)
return true;
else
return false;
}
Run Code Online (Sandbox Code Playgroud)
和String.java:
public boolean isEmpty() {
return value.length == 0;
}
Run Code Online (Sandbox Code Playgroud)
我有以下配置:jdk 1.8.0_77
我想避免应用程序中的整个逻辑支持String.isEmpty()只是为了通过测试,因为我需要在Android API 9之前支持代码,哪里String.isEmpty不可用,还要TextUtils.isEmpty()做更多.任何有关澄清和建议的帮助都会有所帮助.
有人面对过吗?我该如何解决?提前致谢!
我知道可包裹物是隐藏的秘密,但现在我不认为我需要了解它们。
这是我之前的代码:
...
parcel.writeBooleanArray(new boolean[]{booleanValue1, booleanValue2, booleanValue3});
....
boolean[] booleans = new boolean[3];
in.readBooleanArray(booleans);
...
Run Code Online (Sandbox Code Playgroud)
不知何故,它无法在除我之外的许多设备上工作,所以我无法重现它。然后我决定将其更改为:
...
parcel.writeBooleanArray(new boolean[]{booleanValue1});
parcel.writeBooleanArray(new boolean[]{booleanValue2});
parcel.writeBooleanArray(new boolean[]{booleanValue3});
...
boolean[] booleans1 = new boolean[1];
boolean[] booleans2 = new boolean[1];
boolean[] booleans3 = new boolean[1];
in.readBooleanArray(booleans1);
in.readBooleanArray(booleans2); // it crashes here
in.readBooleanArray(booleans3);
....
Run Code Online (Sandbox Code Playgroud)
包裹的源代码:
public final void readBooleanArray(boolean[] val) {
int N = readInt();
if (N == val.length) {
for (int i=0; i<N; i++) {
val[i] = readInt() != 0;
}
} else {
throw new …Run Code Online (Sandbox Code Playgroud)