我使用Java构建的布局 - 而不是XML文件。
我通过Java代码为每个视图分配一个任意id:
例如:
Button btn = new Button(this);
btn.setText("testBtn");
btn.setId(123456);
问题是来自Android工具的uiautomator无法识别id - 我得到空ID。
当我使用XML文件添加按钮时,一切正常。
所以我的问题是,动态设置id有什么问题, 这两者之间有什么变化,为什么uiautomator不能识别动态id?
P.S。目前我不希望将所有布局更改为XML&#39>
答案 0 :(得分:3)
它是UIAutomator
限制.. UIAutomator
仅检测XML layouts
答案 1 :(得分:3)
UIAutomator无法识别像步骤1中那样直接设置的小部件的动态ID,而是我们必须维护未使用ID的xml文件,并在setID()中使用未使用的ID,如步骤2
step1:
Button btn = new Button(this);
btn.setText("testBtn");
btn.setId(123456);
step2:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="newID" type="id"/>
</resources>
Button btn = new Button(this);
btn.setText("testBtn");
String packageName = getPackageName();
int resId = getResources().getIdentifier("newID", "id", packageName);
btn.setId(resId);
The above approach works cool.