3

popupwindow 内の Edittext ウィジェットにソフトキーボードからテキストを入力したいのですが、いくつかの問題で苦労しています。私のアクティビティはゲームカード テーブルで、その上でいくつかのアニメーションを有効にします。ゲームテーブルには、いくつかのボタンがあります。プレイヤーが特定のボタンをクリックすると、ポップアップウィンドウが表示されます。問題は、プレーヤーがポップアップ ウィンドウ内の Edittext にテキストを入力できないことです。これについていくつかの同様の問題を見つけました。最も一般的な提案は次のとおりです。

Popupwindow.setFocusable(true)

この設定でEdittextに普通に入力できるようになりました。ただし、これによりメイン UI スレッドがブロックされ、ゲーム テーブルのアニメーションが停止します。これはユーザー エクスペリエンスに悪いため、発生させたくありません。以下のコード スニペットを使用して、edittext にフォーカスがあるときにソフトキーボードを表示することができます。しかし、キーボードからedittextまで何も入力できません。さらに、popupwindow を閉じると、キーボードがまだ表示され、閉じません。

editText.setOnFocusChangeListener(new OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus){
                    InputMethodManager imm = (InputMethodManager)ct.getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
                    imm.showSoftInput(v, InputMethodManager.SHOW_IMPLICIT);
                }
            }
        });

mainUI スレッドでアニメーションをブロックせずに Edittext にデータを入力する方法を見つけてください。別の方法は、カスタム ダイアログを使用することですが、役に立ちません。ダイアログを使用すると、mainUI スレッドもブロックされます。ご提案いただきありがとうございます。

4

1 に答える 1

0

UI をブロックしたくない場合は、コードのこの部分をスレッドで実行してみてください。AsyncTask は適切な選択です。

ここで AsyncTask の使用方法を確認してください:-> http://developer.android.com/reference/android/os/AsyncTask.html

幸運を

于 2013-01-21T08:48:18.493 に答える