2013-10-27 65 views
1

正如您從這張圖片中可以看出的那樣,我有多個按鈕設置爲鍵盤樣式。我有每個按鈕的onClick在xml指向我的btnKeyPress方法。我打算爲這種方法設置一個開關/外殼,但想知道v.getId是否是一種非常傳統的方法,用於區分哪個按鈕被按下並想知道是否有更好的方法。我主要擔心v.getId是否會根據我的日誌更改或保持不變,而不管該應用運行在哪個電話上。區分Android按鈕陣列中的哪個Android按鈕被點擊,按鈕指向單個方法

screenshot

例如:這是我的空間和Backspace鍵的XML屬性

 <Button 
      android:id="@+id/btnKeySpace" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="25" 
      android:onClick="btnKeyPress" 
      android:text="Space" /> 

     <Button 
      android:id="@+id/btnKeyBackspace" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_weight="75" 
      android:onClick="btnKeyPress" 
      android:text="Bkspc" /> 

這裏是被稱爲

public void btnKeyPress(View v){ 
    System.out.println(v.getId()); 
} 

回答

2

v.getId()總是返回android:id集佈局XML。所以是的,如果你用它來識別你的按鈕,你不會有問題.-

switch (v.getId()) { 
    case R.id.btnKeySpace: 
    break; 
    case R.id.btnKeyBackspace: 
    break; 
    // ... 
} 
+0

很酷!我的系統返回了一個數字,並打算使用數字來設置我的開關/外殼,但是甚至沒有意識到我可以像這樣設置它。只用了一週的java。我是一個新人。儘快接受這個答案。 –

+1

@GarrenFitzenreiter如果您有疑問,請查看文檔http://developer.android.com/reference/android/view/View.html#getId()它表示它與'android:id屬性'=相關) –

+1

@鄒鄒謝謝!剛開始明白這一切意味着什麼。在過去的12年裏,我只知道vb6,所以我有時會感到困惑。 –