2016-02-05 90 views
0

如果有人想分解此代碼並向我解釋。我會很感激。無法理解這行代碼

我在視圖中遇到錯誤(無法解析符號),不確定是否應該用特定視圖替換它?

順便說一句,這是一個onClick方法。

"else if(view.getId()==R.id.Button9){}" 

我從這段代碼得知它是什麼時候「如果」「查看」什麼viewid是在這裏()? == < - 與R.id.button9相關 然後運行這段代碼。我甚至關閉?謝謝。

有點背景故事,我創建了一個ImageButton,當它被點擊時,我想清除屏幕。我在onclicklistener上構建,並在我的用戶公共類上實現了view.OnClickListener

CLEARCANVAS = (ImageButton) findViewById(R.id.button9); 
CLEARCANVAS.setOnClickListener(this); 

@Override 
public void onClick(View v) { 
    if (view.getId()==R.id.button9); 
} 
+0

我現在明白了,我感謝你們花時間給我看。 –

回答

0

如果錯誤與R級相關的,那麼你就需要重建項目,否則,如果它仍然沒有爲你工作,你將不得不重新啓動您正在使用的IDE。基本上如果你使用的是Eclipse,我建議改爲Android Studio,因爲谷歌已經不支持eclipse的android支持。無法解決符號錯誤基本上意味着該項目沒有特定的類引用或任何您嘗試使用。

0

就是這樣。

您有10個按鈕,從button1button10。一切都有一個存儲在R.java文件中的ID來唯一標識它。

假設您想爲button9執行onClick事件。您爲所有按鈕創建一個通用的onClick事件。

@Override 
public void onClick(View v) { 
//now all the 10 buttons have the same onclick event. 
} 

現在區分哪個按鈕被點擊,你需要使用它的ID。

@Override 
public void onClick(View v) { 
if (v.getId()==R.id.button9){ 
    Toast.makeText(context, "Button 9 Clicked!", Toast.LENGTH_SHORT).show(); 
} 
if (v.getId()==R.id.button8){ 
    Toast.makeText(context, "Button 8 Clicked!", Toast.LENGTH_SHORT).show(); 
} 
... 
} 

因此,R.java是您的UI對象在XML和Java代碼之間的鏈接。

您將需要R.java從UI中識別每個對象。

這是自動完成的。如果您收到錯誤說不能解決RYou might want to re-build or clean your project

3

您的查看參數是v,而不是view

將其更改爲v它將編譯:

@Override 
public void onClick(View v) { 
    //if (view.getId()==R.id.button9){ 
    if (v.getId() == R.id.button9){ 
     //handle button9 click 
    } 
} 

另一種常見的方式來做到這一點是定義一個單獨的點擊監聽器爲每個點擊的元素,例如:剛

clearCanvas = (ImageButton) findViewById(R.id.button9); 
    clearCanvas.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      //Handle button9 click 
     } 
    }); 
0

你需要使用v.getId()更改view.getId()。

在OnClick方法中傳遞的視圖是被點擊的視圖,所以它會檢查點擊了哪個ID。