获取Android片段中ID的按钮

时间:2016-04-18 17:03:03

标签: android android-fragments android-studio

我要做的是获取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。

1 个答案:

答案 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);
}