web-dev-qa-db-ja.com

EditTextのフォーカスを処理するイベント

EditTextのフォーカスに関連するイベントを誰かが私に提案できますか?私のアプリケーションにはEditTextが含まれており、その中にURLを受け入れます。

私の問題は、ユーザーがフィールドにURLを入力してクリックイベントなしでさらに移動した後、つまりフォーカスがEditTextから移動するときに、入力されたUrlを検出してサーバーに移動する必要があるということです。

Json Parsingを使用して返信を受け取った場合、より便利になります。

126
Sheetal Shelar

フォーカスリスナーの例を次に示します。

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View view, boolean hasFocus) {
        if (hasFocus) {
            Toast.makeText(getApplicationContext(), "Got the focus", Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(), "Lost the focus", Toast.LENGTH_LONG).show();
        }
    }
});
484
Pratik
  1. クラスの上にEditTextのオブジェクトを宣言します。

     EditText myEditText;
    
  2. OnCreate関数でEditTextを見つけ、EditTextのsetOnFocusChangeListenerを見つけます。

    myEditText = findViewById(R.id.yourEditTextNameInxml); 
    
    myEditText.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                @Override
                public void onFocusChange(View view, boolean hasFocus) {
                    if (!hasFocus) {
                         Toast.makeText(this, "Focus Lose", Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(this, "Get Focus", Toast.LENGTH_SHORT).show();
                    }
    
                }
            });
    

正常に動作します。

10
Wajid khan

上記の有効なソリューションが機能しなかった私たちにとって、ここに別の回避策があります

 searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View view, boolean isFocused) {
            if(!isFocused)
            {
                Toast.makeText(MainActivity.this,"not focused",Toast.LENGTH_SHORT).show();

            }
        }
    });
3
Dev_Man

kotlinでは、次のようになります。

editText.setOnFocusChangeListener { view, hasFocus ->
        if (hasFocus) toast("focused") else toast("focuse lose")
    }
1
arjava