Robotium Robotium 求助帖,获取控件的问题

魏飞翔 · 2015年03月11日 · 最后由 叶子 回复于 2015年03月11日 · 1290 次阅读

先上图,图中控件是我用 UI Automator Viewer 获取到的。


需求是获取到底部的五个 textview 控件,注意是获取到,而不是 click。 底部的五个 textview 的 id 是相同的,不想用 text 去获取,想通过父节点去获取。外层的 TabWidget 的 id 是可知的。中间层的 RelativeLayout 的是没有 id 的。我的想法是通过获取到外层的 TabWidget,然后通过子节点的 index 去获取最终的控件。代码如下。

TabWidget tabWidget = TabWidgetsolo.getView("id");//此处的id是tabwidget的id
tv1 = tabWidget.getChildAt(0).getChildAt(0);
tv2 = tabWidget.getChildAt(1).getChildAt(0);
tv3 = tabWidget.getChildAt(2).getChildAt(0);
tv4 = tabWidget.getChildAt(3).getChildAt(0);
tv5 = tabWidget.getChildAt(4).getChildAt(0);

solo.clickOnView(tv1);

这里会报错,说 tv1 是空,不能点击。获取不到

麻烦大神看下,我写的哪些地方需要改动.

共收到 8 条回复 时间 点赞

输出 tv1.getText().toString() 看一下是否为空,tabWidget.getChildAt(i).getChildAt(0);不应该都是 0,可能是你还没改

@emily 我重新编辑了下,发帖子时写错了。

使用

tv1 = solo.getView("id", 0);
tv2 = solo.getView("id", 1);
tv3 = solo.getView("id", 2);
tv4 = solo.getView("id", 3);
tv5 = solo.getView("id", 4);

通过 id 也获取不到控件。

#3 楼 @tester_felix 你的 TabWidget 的 id 不是 tabs?

#3 楼 @tester_felix 这还没之前写的对呢吧

#3 楼 @tester_felix 我说的是这个意思,

TabWidget tabWidget = TabWidgetsolo.getView("tabs"); 

TextView tv1 = tabWidget.getChildAt(0).getChildAt(0);

TextView tv2 = tabWidget.getChildAt(1).getChildAt(0);


首先你的 TabWidget 的 id 没写对,所以 tabWidget 应该就没获取到。

@emily 我懂你的意思。目前已经解决了,我是头昏了,没有进行封装的初始化。 谢谢你啦

#4 楼 @emily id 的地方是用的 tabs,没有用 “id” 这个单词

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册