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


145

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

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

Json Parsingを使用して返信が得られれば、さらに便利です。

回答:


519

以下はフォーカスリスナーの例です。

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();
        }
    }
});

フォーカス変更リスナー内のフラグメントで、UIを更新できません。
moDev 2013

2
これは動作しません。キーボードが「Enter」で非表示になっているか、一部のデバイスでキーボードボタンを非表示にしていた場合、「フォーカスが失われました」は発生しません。エディットテキストに再びフォーカスすると、「フォーカスを取得」することもできません。
SnowWolf 2016年

1
レイアウトがソフトキーボードの表示時にサイズ変更するように設定されている場合、またはTextWatcherを使用してUIに関連する何かを行う場合、リスナーはたくさん入力される可能性があることに注意してください。stackoverflow.com/questions/14727248/...
M_M

12
  1. クラスの上にEditTextのオブジェクトを宣言します。

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

    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();
                    }
    
                }
            });

正常に動作します。


11

kotlinの場合、次のようになります。

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

4

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

 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();

            }
        }
    });

これは機能しましたが、上記の解決策が機能しなかったことを理解していません
shruti iyyer
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.