获取ID';Android片段中的按钮数量

获取ID';Android片段中的按钮数量,android,android-fragments,android-studio,Android,Android Fragments,Android Studio,我想做的是获取android片段中每个按钮的每个ID。目前我有一个for循环,它通过ID“PA1”、“PA2”、“PA3”运行。。。。我希望能够使用任何ID,但仍然用java代码修改它 这就是我现在拥有的 TextView tv; View viewHold; Button[] btns; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,

我想做的是获取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;
   }
....
TextView电视;
查看视图保持;
按钮[]基站;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.pri_all_视图,容器,假);
视图保持=视图;
int resId=-1;
int c=0;
while(剩余=0){
resId=getResources().getIdentifier(“PA”+(c+1),“id”,MainActivity.PACKAGE_NAME);
C++;
}
btns=新按钮[c-1];
对于(int i=0;i

这确实有效,但我不想使用后面带有数字的通用ID。

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

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

在片段中声明一个字段变量
List
(以实例“buttonIDs”命名)

然后,在您的
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());
    }
}

如果你只使用ArrayList,你不能将while循环和for循环结合起来吗?当我在ArayList对象上使用setOnClickListener时,我会得到一个空指针。不管怎样,你到底在寻找什么?是否要获取当前布局中所有按钮的列表?是的,它们的ID列表。我在代码中进一步使用了它们,我没有发布该部分,因为它不处理获取ID的问题。编辑文本
for (int id : buttonIDs) {
    Button btn = (Button)rootView.findViewById(id);
}