4

基本的に、私は仮想キーボードを表示し、可視EditTextまたはを使用せずに入力を収集しようとしていますTextView。私toggleSoftInputはこれを行うために使用できることを理解していますが、入力を操作するshowSoftInputためにを使用したいので、使用する必要があります。TextWatcherまた、使用しているエンジンはc ++であるため、javaのみのコードをできるだけ少なくしようとしているため、.xmlファイルは避けています。だからここに行く...

public class GameActivity extends Activity {

    protected GameView view = null;
    protected EditText editText;

    protected void onCreate(Bundle bundle)
    {
        super.onCreate(bundle);

        view = new GameView(this);
        setContentView(view);

        editText = new EditText(this);
        editText.setCursorVisible(false);
        editText.setFocusable(true);
        editText.setFocusableInTouchMode(true);
    }

    public boolean showKeyboard()
    {
        JniApp.log("showKeyboard() in Java invoked!!!");

        editText.requestFocus();
        editText.requestFocusFromTouch();

        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_FORCED);
    }

showKeyboard()私のc++によるJavaへの呼び出しはどこにありますか。editText私はそれが焦点を当てていることを確認しました、そしてそれはそうです。ただし、showSoftInputfalseを返します。どんな助けでも大歓迎です。

更新:いくつかのデバッグの後、trueを返すように見えrequestFocusますが、アクティビティはまだview現在のフォーカスであると言います。

4

1 に答える 1

0

たぶん .SHOW_FORCED の代わりに .SHOW_IMPLICIT で試してみてください。

おそらく他のAndroidバージョンの他のエミュレーター/デバイスで試しましたか?

于 2013-08-03T20:33:58.423 に答える