获取按钮ID不是整个按钮

时间:2016-09-30 06:42:07

标签: android android-studio

ArrayList<View> allButtons;
String button;
button = ((RelativeLayout) findViewById(R.id.activity_main)).getTouchables().toString();

System.out.println(button);

输出:

  

System.out:[android.support.v7.widget.AppCompatImageButton {7107785 VFED..C .. ........ 32,74-176,210#7f0b0056 app:id / imageButton2},android.support .v7.widget.AppCompatButton {c4b99da VFED..C .. ... P .... 66,256-242,352#7f0b0057 app:id / button}]

我怎样才能获得button

的ID

3 个答案:

答案 0 :(得分:4)

您应该编写代码

ArrayList<View> allTouchables = ((RelativeLayout) findViewById(R.id.activity_main)).getTouchables();
for (View view : allTouchables) {
    System.out.println(view.getId());
}

如上面的代码返回存在于给定容器中的所有可触摸视图,您还应该检查视图的类型,如

ArrayList<View> allTouchables = ((RelativeLayout) findViewById(R.id.activity_main)).getTouchables();
for (View touchable : allTouchables) {
   // To check if touchable view is button or not
    if( touchable instanceof Button) {
        System.out.println(touchable.getId());
    }
}

要获取id的字符串表示,可以编写

String idString = view.getResources().getResourceEntryName(view.getId());

答案 1 :(得分:2)

aah你可以在添加到arraylist之前检查视图的类型。

ArrayList<Button>buttons = new ArrayList<>();
parentLayout = (RelativeLayout)findViewById(parentID);

for(int i=0; i<parentLayout.getChildCount(); i++){
    View view = parentLayout.getChildAt(i);

   if(view instanceof Button){
       buttons.add((Button)view);
    } 
}

答案 2 :(得分:0)

因此,您需要检查布局中单击了哪个按钮并进行相应处理。

这可以通过两种方式实现。

<强> 1。使用getId()

<强> XML

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Next Layout"
    android:id="@+id/Next"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

<强> YourActivity

  final Button nxtbtn = (Button) findViewById(R.id.Next);



    nxtbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int ID = nxtbtn.getId();

            if(ID == R.id.Next) // your R file will have all your id's in the literal form.
            {
                Log.e(TAG,""+ID);
            }
        }
    });

<强> 2。使用TAG

<强> XML

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Next Layout"
    android:tag="buttonA"
    android:id="@+id/Next"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

只需在xml

中添加TAG属性即可

您的活动

  final Button nxtbtn = (Button) findViewById(R.id.Next);



    nxtbtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

           String Tag = nxtbtn.getTag().toString();
            Log.e("TAG", "" + Tag);
          if (Tag.equal("ButtonA")){ /* Your code here */}
        }
    });

希望这可能有所帮助。