基本的に、私は仮想キーボードを表示し、可視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現在のフォーカスであると言います。