EditText - 焦点聚集时键盘不出现

3
我有一个烦人的问题。 我的应用程序有两个活动(选项卡)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的两个重写方法

@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);
}

你有什么想法,这种情况下XML代码和活动代码应该长什么样子?

4个回答

5

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

尝试使用EditText...


抱歉,仍然没有发生任何事情; - przebar
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" > 尝试在manifest.xml文件中的activity标签中添加此内容。 - Prashant Mishra
我尝试将此添加到Activity2和/或MainActivity中 - 没有效果。 - przebar

0
这个问题的解决方法是,在 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);
                    }
                });
            }
        }
    });

希望这能有所帮助 :)

0
尝试从XML中删除关于“focusable”的两行代码。我有一个非常类似的东西,没有这些代码也可以工作。

删除这些行并不能解决问题 ;/ - przebar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接