2017-05-05 51 views
0

我想让我的第一个应用程序应该是一个Sudoku解算器。 我想我差不多在那里,但有一个问题,我现在试图解决好几个小时,因此我正在向你伸出援助之手。 我有一个带有81个TextBox的GridLayout。我使用已经从81个TextBox'es到9 * 9矩阵没有问题的传输编号:在GridLayout的EditText中尝试ty改变文本

private void writeToNbrs() { 
    for (int i = 0; i < 81; i++) { 
     int temp; 
     try { 
      temp = Integer.parseInt(((EditText) layout.getChildAt(i)).getText().toString()); 
     } catch(Exception e){ 
      temp = 0; 
     } 
     int a = i/9; 
     int row = a; 
     int col = i%9; 
     nbrs[row][col] = temp; 
    } 
} 

问题是,当我想从基质转移号码的文本框为了这个,我使用下面的代码:

private void writeToText(){ 
    for(int row = 0; row<9; row++){ 
     for(int col = 0; col<9; col++){ 
      int temp = nbrs[row][col]; 
      int i = row*9+col; 
      ((EditText)layout.getChildAt(i)).setText(temp); 

     } 
    } 
} 

我不是很熟悉,但调试我试图使用它,我现在明白了,它崩溃的:第一次迭代中

((EditText)layout.getChildAt(i)).setText(temp); 

。 这是为什么?先谢谢你!

回答

0

更改这样的代码,

((EditText)layout.getChildAt(i)).setText(temp+""); 

其他明智的,它会寻找资源ID和会崩溃。

+0

谢谢!修复它。但为什么??对我没有意义 – Ian

+0

在android中,您可以使用字符串资源id(int)而不是实际的字符串。请接受答案,如果它可以帮助您 - – Krish

+0

好的,谢谢! – Ian

0

使用String.valueOf(temp)转换tempString

试试这个:

((EditText)layout.getChildAt(i)).setText(String.valueOf(temp));