android - 遍历两个 View 以检查是否相等

标签 android android-edittext android-view

我有两个相同的 View ,其中包含许多 editText。在一种情况下,预定义的答案填充在 editTexts 中(但不显示给用户)。在第二种情况下,用户从所有空白的 editTexts 开始,然后填写它们,试图使它们与预定义的答案相同。

所以我想遍历用户的 View ,将其与预定义的 View 进行比较,直到发现不等式为止,在这种情况下,该方法将返回 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 都是无效的。

查看您的代码:

EditText editTextAnswer = (EditText)findViewById(editTextAnswerId);

您是否在同一布局中拥有两个 View ,并且隐藏了有答案的 View ?我的意思是,如果您的 Activity 内容是空白 editTexts 的 View ,您将无法找到带有答案的 editText,因为它在其他 xml 中(假设您将其作为不同的 xml)。

关于android - 遍历两个 View 以检查是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13910544/

相关文章:

android - 从android中ListView的顶部和底部删除阴影?

android - 如何在android中检测EditText中的表情符号

android - 应用程序 :transformClassesWithDexForDebug exception and java. util.concurrent.ExecutionException

android - 在某些设备上,选项菜单不会出现在操作栏中

android - 在 Android 4.x 上按下时 Listview 中的 EditText 失去焦点

Android:如何跟踪软键盘是否打开?

java - 如何为特定矩形使用不同的填充颜色

android - 如何在 Android 上实现滑动、叠加 View ?

Android官方闹钟星期样式

android - 无法从 values-v11/themes.xml 引用 Holo 主题