2017-02-24 29 views
0

此代碼一直工作到昨天晚上,但現在。我想要一個值鏈接到按鈕的記錄,我已經使用設置並獲得標記,但只返回最後一個值。通過按鈕傳遞值(可能隱藏)

//create a layout 
     LinearLayout layout = (LinearLayout)findViewById(R.id.linearlayout); 

     // create a list of buttons 
     for(x=0; x<3; x++) 
     { 

      newBut = new Button(this); 

      newBut.setText("("TEXT"); 
      newBut.setTextColor(Color.parseColor("#FFFFFF")); 
      newBut.setTag(x); //hide job id within the button. 


      newBut.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        int newValue = Integer.parseInt(newBut.getTag().toString()); 




       System.out.println(newValue); //this just a test to display the value 


       } 
      }); 
      layout.addView(newBut);  
     } 

錯誤是否明顯 - 不是我。

+1

您想從'v',而不是'newBut'獲取標籤。 –

+1

感謝您的幫助。 –

回答

0

它返回最後一個值,因爲在所有創建的偵聽器中,您始終引用同一個按鈕(最後一個值爲newBut變量),忽略實際的點擊源視圖作爲參數。應該是:

newBut.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       int newValue = Integer.parseInt(v.getTag().toString()); 
       System.out.println(newValue); 
      } 
     });