我有两个相同的视图,其中包含许多editTexts。在一个中,预定义的答案填充在editTexts中(但未向用户显示)。在第二个中,用户从所有空白的editTexts开始,然后填写它们以试图使它们与预定义的答案相同。
所以我想遍历用户的视图,根据预定义的视图进行检查,直到找到不等式,在这种情况下该方法将返回false。
我的代码如下。在onCreate里面我有一个buttonListener(当用户准备好检查答案时) btnSolution.setOnClickListener(new 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 :(得分:2)
这本身并不是错误。我猜您使用的是三星作为目标设备,如果是这样,请不要担心。
另一方面,也许最好只比较字符串。所有那些findViewById都是有用的。
查看您的代码:
EditText editTextAnswer = (EditText)findViewById(editTextAnswerId);
您是否在同一布局中同时拥有两个视图,并且隐藏了具有答案的视图?我的意思是,如果您的视图中包含空白的editTexts作为活动的内容,则无法在其他xml中找到带有答案的editText(假设您将其作为不同的xml执行)。