2012-11-06 36 views
0

我有一段代碼給出了gridSize的一個值onclick(這就是我所希望的,如果你看到任何錯誤,請糾正我) 。但現在沒有做任何事情...在if塊中賦予short值,並將它們賦予另一種不同活動的方法

,讓短值碼:

public static short getGridSize(PuzzleActivity puzzleActivity, ImageButton view) { 
     if (mIbtn3x3 == view) { 
      String puzzle3 = "3"; 
      Short gridSize = Short.parseShort(puzzle3); 
     } else if (mIbtn4x4 == view) { 
      String puzzle4 = "4"; 
      Short gridSize = Short.parseShort(puzzle4); 
     } else if (mIbtn5x5 == view) { 
      String puzzle5 = "5"; 
      Short gridSize = Short.parseShort(puzzle5); 
     } 
     return Short.parseShort(PuzzleActivity.gridSize); 
    } 

應接收的值(拼圖活動)的代碼:

createGameBoard(SizeSelection.getGridSize(this)); 
      break; 

在if代碼中:gridSize得到以下錯誤:「gridSize無法解析或不是字段」。

PuzzleActivity代碼:.getGridSize獲取以下錯誤:「類型SizeSelection中的方法getGridSize(PuzzleActivity,ImageButton)不適用於參數(PuzzleActivity)」。

顯然我不是專業的編碼員。請幫我解決這個問題。在此先感謝〜olijf

回答

0

這裏有幾件事情在這裏。我將要介紹的第一件事是編譯器錯誤。

聽起來好像你打電話給你的代碼是getGridSize錯誤,它希望你和ImageButton一起傳遞給你的代碼。

假設你ImageButton被稱爲imageButton,代碼會是這個樣子(綁定到view這樣你就可以將其切換):

createGameBoard(SizeSelection.getGridSize(this, imageButton)); 

裏面getGridSize你不進行重置gridSize變量而是在每個if/then塊中創建一個新的塊。你需要做這樣的事情:

Short gridSize = -1; 
if(mIbtn3x3 == view) { 
    String puzzle3 = "3"; 
    gridSize = Short.parseShort(puzzle3); 
} 
else if(mIbtn4x4 == view) { 
    String puzzle4 = "4"; 
    gridSize = Short.parseShort(puzzle4); 
} 
... 
return Short.parseShort(gridSize); 

但實際上你做了很多不必要的調用來parseShort。我會做更像這樣的事情:

public static short getGridSize(...) { 
    switch(view) { 
      case mIbtn3x3: 
       return 3; 
      case mIbtn4x4: 
       return 4; 
      case mIbtn5x5: 
       return 5; 
    } 
} 
+0

的mIbtn3x3,四輪驅動,5x5的是ImageButtons。 – Olijf

0

第一變量範圍。 Java變量住括號 - {} 在這一行:

return Short.parseShort(PuzzleActivity.gridSize); 

你只是還沒有宣佈靜態字段「gridSize」在你的類。 做這樣的事情:

static short getGridSize(){ 
private short gridSize; 
if{...} 
else if{...} 
return gridSize; 
} 

Seccond錯誤表明您撥打getGird()有錯誤的參數(類型),並使用PuzzleActivity代替的ImageButton