循环浏览活动中的所有“小部件”/元素

问题描述:

由于我需要移动应用程序来存储我在医院收集的一堆数据,因此我几天前创建了自己的Android应用程序。循环浏览活动中的所有“小部件”/元素

我对Java和android环境相当陌生,虽然它看起来很容易理解并且非常类似于C++。

不管怎样,我的应用程序有一堆“的EditText”和单选按钮的,我的问题是:

我怎么能遍历所有这些部件(EditTexts和单选按钮)?

在.NET中,你可以做一个“为容器中的每个元素”循环,但我似乎无法找到一种方法来在Java/Android环境中执行此操作。

注:我不知道。“小部件”存在多少的活动,因为有些dinamicaly创建,别人硬编码和其他一些显示,如果某些用户首选项设置

任何帮助或提示为赞赏。

for (int i = 0; i < rootView.getChildCount(); i++) 
    rootView.getChildAt(i) 

注意这将返回查看-S,你将不得不在运行时准确地检查什么类型查看你正在看

+0

这个技巧似乎是在朝着正确的方向指向。 – Tivie 2010-11-16 22:15:55

+2

有趣。但起点是一个活动。所以你的演示中缺少从活动到rootView的步骤;-) - 我可能可以自己弄清楚,但它本来不错。 – Martin 2012-01-01 18:25:48

它的工作原理。

关于视图类型(即微调,单选按钮,EditText上,等等),我们可以标记我们想要的布局XML文件中解析,然后每种类型添加一个条件,即:

if (Widget_Tag != null){ 

     View Current_Widget = (View) rootView.getChildAt(i);   

     String Widget_Tag = (String) Current_Widget.getTag(); 

     if (Widget_Tag.equals("MyEdiText")) { 

     //do something 

     } 
    } 

的,如果( Widget_Tag!= null){是为了防止NullPointReferences。你也可以用Try/Catch来做它。

+0

就像我对应用说的那样:'rootView'来自哪里。 – Martin 2012-01-01 18:26:48

你可以试试这个代码:

LayoutInflater inflater = getLayoutInflater(); 
LinearLayout l = (LinearLayout) inflater.inflate(R.layout.main, null); 

ViewGroup Current_Widget = (ViewGroup)l.getRootView(); 

for (int i = 0; i < Current_Widget.getChildCount(); i++) 
    Current_Widget.getChildAt(i);