我要做的是获取android片段中每个按钮的每个ID。目前我有一个贯穿ID的for循环,它是" PA1"," PA2"," PA3" ....我希望能够使用任何ID,但仍然使用java代码修改它。
这就是我现在所拥有的
TextView tv;
View viewHold;
Button[] btns;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.pri_all_view, container, false);
viewHold = view;
int resId=-1;
int c=0;
while(resId != 0){
resId = getResources().getIdentifier("PA" + (c+1), "id", MainActivity.PACKAGE_NAME);
c++;
}
btns = new Button[c-1];
for(int i=0;i < btns.length; i++){
resId = getResources().getIdentifier("PA" + (i+1), "id", MainActivity.PACKAGE_NAME);
btns[i] = (Button) view.findViewById(resId);
btns[i].setTransformationMethod(null);
btns[i].setOnClickListener(this); // calling onClick() method
}
return view;
}
....
这确实有效,但我不想在它之后使用带有数字的通用ID。
答案 0 :(得分:0)
我假设你的按钮都在同一个视图组中。如果没有,您将需要进行递归调用以处理子视图。
不确定是否要保存按钮的引用或按钮ID的引用。当我读到这个问题时,我猜你需要按钮ID。
在您的片段中声明一个字段变量List<Integer>
(以实例&#34命名; buttonIDs&#34;)。
然后,在onCreateView
:
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.pri_all_view, container, false);
for (int i=0; i < rootView.getChildCount(); i++) {
View v = rootView.getChildAt(i);
if (v instanceof Button) {
buttonIDs.add(v.getId());
}
}
如果您想使用您的ID:
for (int id : buttonIDs) {
Button btn = (Button)rootView.findViewById(id);
}