簡體   English   中英

Android Studio(java)使用字符串查找視圖ID

[英]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種可能性:

  • 使用您的ID創建一個數組,以便能夠使用for循環
  • ButterKnife@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM