我有兩個相同的視圖與一些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
任何明顯錯誤以下錯誤?
爲什麼findViewById?如果它是一個編輯文本,就可以從onClick獲得視圖。而E/SKIA(16370):FimgApiStretch並不是一個錯誤;查看發生崩潰的地方,我敢打賭這是一個NPE – quinestor
哦,這幾乎是arcastro說:) – quinestor