Android Uiautomator 无法以编程方式识别视图 ID

Android Uiautomator not recognized the programatically view id

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

这是一个 UIAutomator 限制。UIAutomator 仅检测 XML layouts

中列出的对象

UIAutomator 将无法识别像步骤 1 中那样直接设置的小部件的动态 ID,相反,我们必须维护 xml 未使用 ID 的文件,并在 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.