3

我想从软键盘输入文本到弹出窗口内的 Edittext 小部件,但我遇到了一些问题。我的活动是一张游戏卡桌,并在上面启用一些动画。在游戏表中,有一些按钮。如果玩家点击某个按钮,将显示一个弹出窗口。问题是播放器无法在弹出窗口内向 Edittext 输入文本。我发现了一些类似的问题,最流行的建议是:

Popupwindow.setFocusable(true)

使用此设置,我可以正常输入到 Edittext。但是,这会阻塞主 UI 线程并导致游戏表中的动画停止。我不希望这种情况发生,因为它不利于用户体验。当 edittext 使用下面的代码片段获得焦点时,可以显示软键盘。但是,我无法输入从键盘到编辑文本的任何内容。此外,当我关闭弹出窗口时,键盘仍然显示而不关闭。

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 回答