【问题标题】:EditText - keyboard doesn't appear on focusEditText - 键盘没有出现在焦点上
【发布时间】:2025-12-12 22:50:02
【问题描述】:

我有这个烦人的问题。 我的应用有 2 个活动(选项卡)Activity1:listview,Activity2:editText+listview。 应用程序以 Tab1(Activity1) 开头。当我打开第二个活动(带有edittext)时,无论是否选择了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 android-layout android-edittext android-softkeyboard


    【解决方案1】:

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

    Keyboard not shown when i click on edittextview in android?

    试试这段代码

    mEditText.clearFocus();
    

    【讨论】:

      【解决方案2】:

      尝试从 xml 中删除关于“可聚焦”的两行。我有一些非常相似的东西,没有它们也可以工作

      【讨论】:

      • 同样,删除这些行没有帮助;/
      【解决方案3】:
      try {
                          InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                          imm.hideSoftInputFromWindow(
                                  YourEditText.getWindowToken(), 0);
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
      

      用edittext试试这个...

      【讨论】:

      • 对不起,仍然没有任何反应;/
      • android:windowSoftInputMode="stateAlwaysHidden|adjustResize" > 尝试在 manifest.xml 的活动标签中添加它
      • 我尝试将此添加到活动 2 和/或主要活动 - 没有效果
      【解决方案4】:

      解决方法,显式调用软键盘 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);
                          }
                      });
                  }
              }
          });
      

      希望这会有所帮助:)

      【讨论】: