0

したがって、問題は、フォーカスを EditText から別のものに変更すると、選択したものをトーストすることですが、選択した EditText の 1 つのトーストではなく、以前に選択したものを取得してから、選択したものの結果を取得します。 TextWatcher の使い方がわからない コードのサンプルは次のとおりです。

heure.setOnFocusChangeListener(new OnFocusChangeListener() {



            @Override
            public void onFocusChange(View arg0, boolean arg1) {
                datee.removeTextChangedListener(yourTextWatcher);
                Toast.makeText(RendezVousActivity.this,"heure", 5000).show();


            }
        });


        datee.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                heure.removeTextChangedListener(yourTextWatcher);
                Toast.makeText(RendezVousActivity.this,"Date", 5000).show();

            }
        });
4

1 に答える 1

1

OnFocusChanged は 2 回呼び出されます。1 回は EditText がフォーカスされたとき、もう 1 回はフォーカスが失われたときです。

したがって、EditText をクリックすると、トーストが作成されます。その後、別の EditText をクリックすると、最初のテキストがフォーカスを失い、最初のトーストが再び表示されます。次に、2 番目のテキストがフォーカスを取得し、2 番目のトーストが表示されます。

トーストが選択されているときにのみトーストを表示したい場合は、次を使用してみてください。

heure.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View arg0, boolean arg1) {
        datee.removeTextChangedListener(yourTextWatcher);
        if(v.isFocused()) {
            Toast.makeText(RendezVousActivity.this,"heure", 5000).show();
        }
    }
});

datee.setOnFocusChangeListener(new OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        heure.removeTextChangedListener(yourTextWatcher);
        if(v.isFocused()) {
            Toast.makeText(RendezVousActivity.this,"Date", 5000).show();
        }
    }
});
于 2013-04-21T04:22:56.033 に答える