2016-06-13 6 views
0

私はちょうどそれをしたいグレードを入力すると、入力したグレードに従ってポイントフィールドに変わります。ポイントを入力するとグレードが変更されます入力されたポイントに従って。私は両方のeditTextのtextChangeListenerを追加しましたが、私が何かを入力すると、私のアプリはちょうど応答しません。Android TextWatcherは2つのテキストを連続して編集しません

http://i.stack.imgur.com/50LYo.png

grade.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

       if (grade.getText().toString().equals("A+")) 
       { 
        points.setText("4.00"); 
       } 
       else if (grade.getText().toString().equals("A")) 
       { 
        points.setText("3.75"); 
       } 
       else if (grade.getText().toString().equals("A-")) 
       { 
        points.setText("3.50"); 
       } 
       else if (grade.getText().toString().equals("B+")) 
       { 
        points.setText("3.25"); 
       } 
       else if (grade.getText().toString().equals("B")) 
       { 
        points.setText("3.00"); 
       } 
       else if (grade.getText().toString().equals("B-")) 
       { 
        points.setText("2.75"); 
       } 
       else if (grade.getText().toString().equals("C+")) 
       { 
        points.setText("2.50"); 
       } 
       else if (grade.getText().toString().equals("C")) 
       { 
        points.setText("2.25"); 
       } 
       else if (grade.getText().toString().equals("D")) 
       { 
        points.setText("2.00"); 
       } 
       else if (grade.getText().toString().equals("F")) 
       { 
        points.setText("0.0"); 
       } 
       else 
        points.setText(null); 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 

points.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 

       if (points.getText().toString().matches("[4]|[4]\\.[0]{0,2}")) 
       { 
        grade.setText("A+"); 
       } 
       else if (points.getText().toString().matches("[3]\\.[7][5]{1}")) 
       { 
        grade.setText("A"); 
       } 
       else if (points.getText().toString().matches("[3]\\.[5][0]{0,1}")) 
       { 
        grade.setText("A-"); 
       } 
       else if (points.getText().toString().matches("[3]\\.[2][5]{1}")) 
       { 
        grade.setText("B+"); 
       } 
       else if (points.getText().toString().matches("[3]|[3]\\.[0]{0,2}")) 
       { 
        grade.setText("B"); 
       } 
       else if (points.getText().toString().matches("[2]\\.[7][5]{1}")) 
       { 
        grade.setText("B-"); 
       } 
       else if (points.getText().toString().matches("[2]\\.[5][0]{0,1}")) 
       { 
        grade.setText("C+"); 
       } 
       else if (points.getText().toString().matches("[2]\\.[2][5]{1}")) 
       { 
        grade.setText("C"); 
       } 
       else if (points.getText().toString().matches("[2]|[2]\\.[0]{0,2}")) 
       { 
        grade.setText("D"); 
       } 
       else if (points.getText().toString().matches("[0]|[0]\\.[0]{0,2}")) 
       { 
        grade.setText("F"); 
       } 
       else 
        grade.setText(null); 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 

      } 
     }); 
+1

ここ –

+0

を共有します? – Vickyexpert

+0

チェック何らかのエラーが来るかどうかをtextChangeのLISTNERのコードを入れて、あなたのコード – sushildlh

答えて

0

次のコードを試してください:断片もしくはのonCreate(の

onViewCreatedにおけるコールは、setFocus()メソッド)を活性

は、setFocus(グレード)

setFocus(points);

TextWatcher gradeWatcher = new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 


      } 

      @Override 
      public void afterTextChanged(Editable s) { 
      if (grade.getText().toString().equals("A+")) 
       { 
        points.setText("4.00"); 
       } 
       else if (grade.getText().toString().equals("A")) 
       { 
        points.setText("3.75"); 
       } 
       else if (grade.getText().toString().equals("A-")) 
       { 
        points.setText("3.50"); 
       } 
       else if (grade.getText().toString().equals("B+")) 
       { 
        points.setText("3.25"); 
       } 
       else if (grade.getText().toString().equals("B")) 
       { 
        points.setText("3.00"); 
       } 
       else if (grade.getText().toString().equals("B-")) 
       { 
        points.setText("2.75"); 
       } 
       else if (grade.getText().toString().equals("C+")) 
       { 
        points.setText("2.50"); 
       } 
       else if (grade.getText().toString().equals("C")) 
       { 
        points.setText("2.25"); 
       } 
       else if (grade.getText().toString().equals("D")) 
       { 
        points.setText("2.00"); 
       } 
       else if (grade.getText().toString().equals("F")) 
       { 
        points.setText("0.0"); 
       } 
       else 
        points.setText(null); 

      } 
     }; 

TextWatcher pointWatcher = new TextWatcher() { 
      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

      } 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 


      } 

      @Override 
      public void afterTextChanged(Editable s) { 
      if (points.getText().toString().matches("[4]|[4]\\.[0]{0,2}")) 
       { 
        grade.setText("A+"); 
       } 
       else if (points.getText().toString().matches("[3]\\.[7][5]{1}")) 
       { 
        grade.setText("A"); 
       } 
       else if (points.getText().toString().matches("[3]\\.[5][0]{0,1}")) 
       { 
        grade.setText("A-"); 
       } 
       else if (points.getText().toString().matches("[3]\\.[2][5]{1}")) 
       { 
        grade.setText("B+"); 
       } 
       else if (points.getText().toString().matches("[3]|[3]\\.[0]{0,2}")) 
       { 
        grade.setText("B"); 
       } 
       else if (points.getText().toString().matches("[2]\\.[7][5]{1}")) 
       { 
        grade.setText("B-"); 
       } 
       else if (points.getText().toString().matches("[2]\\.[5][0]{0,1}")) 
       { 
        grade.setText("C+"); 
       } 
       else if (points.getText().toString().matches("[2]\\.[2][5]{1}")) 
       { 
        grade.setText("C"); 
       } 
       else if (points.getText().toString().matches("[2]|[2]\\.[0]{0,2}")) 
       { 
        grade.setText("D"); 
       } 
       else if (points.getText().toString().matches("[0]|[0]\\.[0]{0,2}")) 
       { 
        grade.setText("F"); 
       } 
       else 
        grade.setText(null); 

      } 
     }; 
/*---------- SET FOCUS LISTENERS ON EDIT TEXT--------------------------*/ 
    public void setFocus(EditText editText){ 
     editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus) { 
        if (v.getId() == grade.getId()) {  
         grade.addTextChangedListener(gradeWatcher); 
         points.removeTextChangedListener(pointWatcher); 
        } else if (v.getId() == points.getId()) { 
         points.addTextChangedListener(pointWatcher);  
         grade.removeTextChangedListener(gradeWatcher); 

        } 
       } 
      } 
     }); 
    } 
関連する問題