1

いくつかのeditTextsを持つ2つの同一のビューがあります。1つは、事前定義された回答がeditTextsに入力されます(ただし、ユーザーには表示されません)。2番目の例では、ユーザーはすべての空白のeditTextから始めて、事前定義された回答と同じになるように入力します。

したがって、不等式が見つかるまで、ユーザーのビューをループして、事前定義されたビューと照合します。不等式が見つかると、メソッドは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

明らかなエラーはありますか?

4

1 に答える 1

2

それ自体はエラーではありません。ターゲット デバイスとして Samsung を使用していると思われますが、心配する必要はありません。

逆に文字列だけ比較した方がいいのかも。これらすべての findViewById は非効率的です。

あなたのコードを見る:

EditText editTextAnswer = (EditText)findViewById(editTextAnswerId);

同じレイアウトに両方のビューがあり、回答のあるビューが非表示になっていますか? つまり、アクティビティのコンテンツとして空白の editTexts を含むビューがある場合、他の xml にあるため、答えのある editText を見つけることができません (別の xml として行ったと仮定します)。

于 2012-12-17T08:32:16.657 に答える