首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取Android片段中按钮的ID

获取Android片段中按钮的ID
EN

Stack Overflow用户
提问于 2016-04-18 17:03:03
回答 1查看 1.1K关注 0票数 0

我想要做的是获取android片段中每个按钮的每个ID。目前,我有一个for循环,它通过ID "PA1“、"PA2”、"PA3“.我希望能够使用任何ID,但仍然使用java代码修改它。

这就是我现在拥有的

代码语言:javascript
复制
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,在它之后有一个数字。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-18 18:35:15

我假设您的按钮都在同一个视图组中。如果没有,则需要进行递归调用来处理子视图。

不确定是否要保存按钮的引用或按钮ID的引用。当我读到问题的时候,我想你需要按钮ID。

在片段中声明一个字段变量List<Integer> (例如,命名为“按钮in”)。

然后,在您的onCreateView中:

代码语言:javascript
复制
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:

代码语言:javascript
复制
for (int id : buttonIDs) {
    Button btn = (Button)rootView.findViewById(id);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36700089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档