编辑文本 - 键盘不显示在焦点上



我遇到了这个烦人的问题。我的应用程序有2个活动(选项卡)活动1:列表视图,活动2:编辑文本+列表视图。应用程序从Tab1(Activity1)开始。当我打开第二个活动(带编辑文本)时,无论是否选择了edittext(可编程),当我单击edittext时,都不会发生任何事情(应显示软键盘)。唯一的解决方案是更改活动(单击Tab1小部件)并返回到活动2——在这个选项卡交换之后,键盘工作正常。

带有edittext的XML布局的一部分:

    <EditText
    android:hint="Wyszukaj..."
    android:id="@+id/editText1"
    android:layout_width="match_parent"
    android:layout_height="45dp"
    android:inputType="textAutoComplete|text"
    android:singleLine="true" 
    android:focusable="true"
    android:focusableInTouchMode="true"
>

这是Activity2 中的2个被高估的方法

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.tab2);
    this.db = DataBase.getInstance();
    this.ds = DataSource.getInstance();
    this.prepareListView();
}
@Override
protected void onResume() {
    super.onResume();
    this.doubleBackToExitPressedOnce = false;
}
private void prepareListView() {
    sbal = this.db.getAllStops();
    adapter = new StopListAdapter(this, sbal);
    lv = (ListView) findViewById(R.id.tab2list);
    lv.setAdapter(adapter);
    lv.setOnItemClickListener(onClick);
    EditText et = (EditText) findViewById(R.id.editText1);
    et.addTextChangedListener(changeWatcher);
    registerForContextMenu(lv);
}

对于XMLcode和活动代码在这种情况下应该是什么样子,您有什么想法吗?

看看这个答案。它为我解决了同样的问题:

当我在android中点击edittextview时,键盘没有显示?

并尝试这个代码

mEditText.clearFocus();

试着从xml中去掉关于"focusable"的两行。我有一些非常相似的东西,它在没有它们的情况下工作

try {
                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(
                            YourEditText.getWindowToken(), 0);
                } catch (Exception e) {
                    e.printStackTrace();
                }

尝试使用edittext。。。

解决方法是显式调用软键盘onCreate()和onResume()方法。

 editText.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            if (editText.isEnabled() && editText.isFocusable()) {
                editText.post(new Runnable() {
                    @Override
                    public void run() {
                        Context context = getApplicationContext();
                        final InputMethodManager imm = 
          (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
                        imm.showSoftInput(editor,InputMethodManager.SHOW_IMPLICIT);
                    }
                });
            }
        }
    });

希望这有帮助:)

最新更新