[英]android studio(java) finding view id with string
我只是為了練習而制作計算器,但發現按鈕太多了。 我將他們的ID命名為button + row + col ex)row = 5,col = 4-> id = button54
由於我必須攻擊監聽器的每個按鈕,因此我發現手動執行此操作非常煩人。 喜歡,
findViewById(R.id.button11).setOnClickListener(this);
findViewById(R.id.button12).setOnClickListener(this);
...
findViewById(R.id.button95).setOnClickListener(this);
我可以這樣嗎
for(int i=1; i<=9; i++){
for(int j=1; j<=5; j++){
findViewById(R.id."button"+Integer.toString(i) + Integer.toString(j)).setOnClickListener(this);
}
}
或其他方法來簡化此過程。
你不能那樣做。 2種可能性:
@BindViews
批注一起使用 由於您正在使用許多按鈕,因此建議您將它們全部放入一個ViewGroup中(例如LinearLayout,FrameLayout或類似的東西),然后遍歷該ViewGroup的每個View,檢查其實例,然后分配單擊偵聽器。
這是一些偽代碼,因為我忘記了Java是如何工作的
ViewGroup viewGroup = findViewById(R.id.yourViewGroupName);
for each child in viewGroup.getChildren {
if child is of type Button {
child.setOnClickListener(this);
}
}
我認為您應該在XML中添加onClick“ ID”,然后讓Android Studio來完成。
<Button
android:id="@+id/bt_54"
android:layout_width="100dp"
android:layout_height="100dp"
android:clickable="true"
android:focusable="true"
android:onClick="oc_bt_54"
/>
現在在您的xml文件中,將鼠標懸停在onClick上方,該光標應用紅色加下划線並轉到左側的紅色燈泡。 您的選擇:活動xy中的創建方法。
現在在“活動”中,您將看到:
public void oc_bt_54(View view) {
}
無需findViewByID()
。 非常簡單和干凈的解決方案。
(提示:如果需要在特殊活動中創建的onClick方法,請使用:
tools:context=".your_special_Activity"
在xml的主布局中。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.