我想要做的是获取android片段中每个按钮的每个ID。目前,我有一个for循环,它通过ID "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,在它之后有一个数字。
发布于 2016-04-18 18:35:15
我假设您的按钮都在同一个视图组中。如果没有,则需要进行递归调用来处理子视图。
不确定是否要保存按钮的引用或按钮ID的引用。当我读到问题的时候,我想你需要按钮ID。
在片段中声明一个字段变量List<Integer> (例如,命名为“按钮in”)。
然后,在您的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());
}
}如果您想使用您的If:
for (int id : buttonIDs) {
Button btn = (Button)rootView.findViewById(id);
}https://stackoverflow.com/questions/36700089
复制相似问题