2012-12-17 68 views
1

我有兩個相同的視圖與一些editTexts。其中之一是,預定義的答案在editTexts中填充(但不向用戶顯示)。第二,用戶以所有空白的editTexts開始,然後填充它們,試圖使它們與預定義的答案相同。通過兩個視圖循環檢查是否相等

所以我想遍歷用戶的視圖,根據預先定義的視圖進行檢查,直到找到不等式,在這種情況下,該方法將返回false。

我的代碼如下。所述的onCreate內我有一個buttonListener(當用戶準備好檢查答案) btnSolution.setOnClickListener(新View.OnClickListener(){

 @Override 
     public void onClick(View v) { 
      if(checkAnswer() == true){ 
       Toast.makeText(getBaseContext(), "all good!", Toast.LENGTH_LONG).show(); 
      } 
      else { 
       Toast.makeText(getBaseContext(), "no good", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 

的checkAnswer()方法被定義如下

public boolean checkAnswer() { 
     final int ROW_COUNT = 15; 
     final int COL_COUNT = 10; 
     final String ROWS[] = {"R1","R2","R3","R4","R5","R6","R7","R8","R9","R10","R11","R12","R13","R14","R15"}; 
     final String COLS[] = {"C1","C2","C3","C4","C5","C6","C7","C8","C9","C10"}; 

     for(int i=0; i<ROW_COUNT; i++) { 
      for(int j=0; j<COL_COUNT; j++) { 
       String a = ROWS[i]; 
       String b = COLS[j]; 
       int editTextBaseId = getResources().getIdentifier("box" + a + b, "id", getPackageName()); 
       int editTextAnswerId = getResources().getIdentifier("boxA" + a + b, "id", getPackageName()); 
       EditText editTextBase = (EditText)findViewById(editTextBaseId); 
       EditText editTextAnswer = (EditText)findViewById(editTextAnswerId); 
       String textBase = editTextBase.getText().toString(); 
       String textAnswer = editTextAnswer.getText().toString(); 
       if(textBase.equals(textAnswer)) { 
       } 
       else { 
        return false; 
       }    
      } 
     }   
     return true;   
    } 

不幸的是,當我嘗試和運行此我得到一個崩潰,在我的logcat

12-17 00:05:02.075: E/SKIA(16370): FimgApiStretch:stretch failed 

任何明顯錯誤以下錯誤?

+0

爲什麼findViewById?如果它是一個編輯文本,就可以從onClick獲得視圖。而E/SKIA(16370):FimgApiStretch並不是一個錯誤;查看發生崩潰的地方,我敢打賭這是一個NPE – quinestor

+0

哦,這幾乎是arcastro說:) – quinestor

回答

2

這不是一個錯誤本身。我猜你使用的是三星作爲目標設備,如果是這樣,請不要擔心。

另一方面,也許最好只比較字符串。所有這些findViewById都是不合適的。

看你的代碼:

EditText editTextAnswer = (EditText)findViewById(editTextAnswerId); 

你有相同的佈局兩個視圖,以及一個與答案被隱藏?我的意思是,如果你的視圖有空白的editTexts作爲你的活動內容,你不能找到帶有答案的editText,因爲它在其他xml中(假設你做了一個不同的xml)。

+0

是的,抱歉,澄清答案是在另一個佈局。 – Kurt