2014-10-15 4 views
0

안녕하세요. 내 앱에서 edittext 입력이 일부 메소드에서 나온 경우 값을 표시해야하는 2 개의 editText가 있습니다. editText에 대한 입력이 키보드에서 발생하면 textwatcher를 호출해야합니다. edittext1 가상 키보드로부터 입력을 갖는다하나의 edittext는 textwatcher를 호출하거나 textview로 작동해야합니다. android

  • 경우 다음 edittext2 경우 [텍스트 뷰로서 여기 edittext2 작용]

  • 을 edittext2에있어서 표시 값을 호출하는 TextWatcher 트리거 :이다

    가상 키보드에서 입력 한 다음 메서드를 호출하고 edittext1에 결과를 표시하는 텍스트 워처를 트리거합니다 [여기 edittext1은 텍스트 뷰로 작동합니다]

이 가능합니까? 그렇다면 나에게 따라야 할 개념을 말해주십시오.

감사

답변

0

은 직접 것 아마 CRASH하여 응용 프로그램을 구현. 당신은 당신이 그들에 입력하기 전에 글고 치기에 플래그 변수를

public class MainActivity extends Activity { 

    EditText et1, et2; 
    String flag = ""; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     et1 = (EditText) findViewById(R.id.editText1); 
     et2 = (EditText) findViewById(R.id.editText2); 

     // Here update the flag variable to keep track which text view is in use 
     et1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       flag = "ET1"; 
      } 
     }); 

     // Here update the flag variable to keep track which text view is in use 
     et2.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       flag = "ET2"; 
      } 
     }); 

     et1.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 
      } 

      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
      } 

      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 
       // Set the value of editText2 value here if only flag contains 
       // ET1 
       // This will prevent changes if ET2 is being used 
       if (flag.equals("ET1")) { 
        et2.setText(s); 
       } 
      } 
     }); 

     et2.addTextChangedListener(new TextWatcher() { 

      public void afterTextChanged(Editable s) { 
      } 

      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
      } 

      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 
       // Set the value of editText1 value here only if flag equals ET2 
       if (flag.equals("ET2")) { 
        et1.setText(s); 
       } 
      } 
     }); 
    } 
} 

다음 실행 더블 클릭을 사용하여 주위에 작업을 할 수 있습니다. 적절한 상황에서 편집 텍스트를 활성화 및 비활성화하여 한 번 클릭으로 동일한 결과를 얻을 수 있으므로이를 향상시킬 수 있습니다.

코드에 대한 질문이 있으면 아래에서 의견을 말하십시오.

+0

고마워하지만 사용하지 않는 체크 상자 사촌 숫자 키 스트로크 감소해야합니다 ... 거기에 edittext에 대한 입력을 감지하는 방법은 가상 키보드에서 무엇입니까? – Sham

+0

이 경우 TextWatcher가 도움이 될 것입니다. 그리고 당신이'키 스트로크의 수를 줄여야 함을 의미하는 것에 대해 더 설명 할 수 있습니까? – codePG

+0

내 앱에는 5 개의 edittext와 다른 위젯이 없어야합니다 ... 키 입력이 가상에서 발생했을 때 외부에서 수행 할 수 없습니다. 키를 누른 다음 watcher 함수를 호출하여 textview로 작동합니까? – Sham

관련 문제