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