我在java中建立了一个项目,它假设在应用程序中获取页面的smali代码,并返回该页面布局中的所有按钮。
首先,我为适当的 xml 文件实现了一个解析器。 解析器搜索页面中的所有按钮。 它工作正常。
但是,我遇到了一个问题,因为我注意到 smali 代码可以向页面布局动态添加按钮。我想为 smali 文件实现解析器,但我认为这样做没有意义。
我有两个想法,但我不知道它们是否可以应用:
1) 运行 onCreate 方法,同时向 xml 文件中添加 View 。 之后,我在页面布局中有了完整的 View 。
2) 使用 UI 层次结构,它返回页面中 View 的层次结构。但我不知道如何以编程方式使用它并轻松获得它。
谢谢你,伊农
最佳答案
为您的 Activitie(或 fragment )的 ViewGroup 运行此命令,所有按钮都将位于 mButton 中。
List<Button> mButtons = new ArrayList();
void getAllButtons(ViewGroup v) {
for (int i = 0; i < v.getChildCount(); i++) {
View child = v.getChildAt(i);
if(child instanceof ViewGroup)
getAllButtons((ViewGroup)child);
else if(child instanceof Button)
mButtons.add((Button)child);
}
}
关于android - 获取应用页面中的所有按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561304/