Android Uiautomator无法识别以编程方式查看ID

时间:2015-04-27 12:54:23

标签: android view uiautomator android-uiautomator

我使用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>

2 个答案:

答案 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.