Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在TabHost中以编程方式关闭/隐藏键盘?_Android_Android Tabhost_Android Softkeyboard - Fatal编程技术网

Android在TabHost中以编程方式关闭/隐藏键盘?

Android在TabHost中以编程方式关闭/隐藏键盘?,android,android-tabhost,android-softkeyboard,Android,Android Tabhost,Android Softkeyboard,我目前正在开发一个Android应用程序,当您第一次加载这个应用程序时,它使用TabHost来显示应用程序的各种视图(活动)。因此,当它加载时,它有一个视图,用户可以在其中输入一个数字,从而自动显示软键盘 起初,我假设当用户转到应用程序中的其他选项卡时,如果没有EditText字段,键盘会消失,但是键盘会保留下来,并从数字键盘切换到标准文本键盘,而关闭键盘的唯一方法是单击设备上的后退按钮。这不是用户友好的,也不是我想要的,因为当用户切换到另一个选项卡时,键盘应该关闭 我已经创建了下面的代码,如果

我目前正在开发一个Android应用程序,当您第一次加载这个应用程序时,它使用TabHost来显示应用程序的各种视图(活动)。因此,当它加载时,它有一个视图,用户可以在其中输入一个数字,从而自动显示软键盘

起初,我假设当用户转到应用程序中的其他选项卡时,如果没有EditText字段,键盘会消失,但是键盘会保留下来,并从数字键盘切换到标准文本键盘,而关闭键盘的唯一方法是单击设备上的后退按钮。这不是用户友好的,也不是我想要的,因为当用户切换到另一个选项卡时,键盘应该关闭

我已经创建了下面的代码,如果键盘当前在屏幕上打开,它应该会关闭

private OnTabChangeListener MyOnTabChangeListener = new OnTabChangeListener(){
        @Override

            public void onTabChanged(String tabId) {
            Log.d("TAG", "I am Inside the Tab Changed Function!!");
                if(getTabHost().getCurrentTabTag().equals("SecondTab")) {
                    Log.d("TAG", "I am Inside the SecondTab Section!!");

                    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
                    if(imm != null)
                    { 
                        Log.d("TAG", "I am Inside the SecondTab imm null!!");
                        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); 
                    }

                }
                if(getTabHost().getCurrentTabTag().equals("FirstTab")) {
                    Log.d("TAG", "I am Inside the FirstTab Section!!");


                    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
                    if(imm != null)
                    { 
                        Log.d("TAG", "I am Inside the FirstTab imm null!!");
                        imm.toggleSoftInput(0, InputMethodManager.SHOW_IMPLICIT); 
                    } 

                }
            }


    };
上面的代码的工作原理就像我进入第二个选项卡,键盘在第一个选项卡上打开,它将关闭,但是如果我接着进入第三个选项卡,然后返回第二个选项卡,它将重新打开键盘,这是我不想要的,因为我只需要第一个选项卡上的键盘

有人能帮我吗?因为我不敢相信仅仅控制软键盘就这么难

提前谢谢

编辑

我甚至尝试在SecondTab click listener中使用以下代码,但没有成功:

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
                    if(imm != null)
                    { 
                        Log.d("TAG", "I am Inside the SecondTab imm null!!");
                        imm.toggleSoftInput(0, InputMethodManager.HIDE_IMPLICIT_ONLY); 
                    }
编辑2

我很感激下面的第一个回复,但是我尝试过将其添加到活动本身,但由于某些原因它不起作用:S我也尝试过许多不同的事情,但没有成功,我甚至将下面的内容添加到我的清单文件中,但这不起作用,这令人费解:S

android:windowSoftInputMode="stateHidden"
这本应该有效,但没有,这真的很烦人。我的清单文件的一部分如下:

 <application
        android:allowBackup="true"
        android:icon="@drawable/logo"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".TabActivityTop"
            android:label="@string/app_name" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name="Tab1" android:screenOrientation="portrait"></activity>
        <activity android:name="Tab2" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden"></activity>
        <activity android:name="Tab3" android:screenOrientation="portrait"></activity>
        <activity android:name="Tab4" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden"></activity>
    </application>
我真的希望有人能帮我:)

试试这样:

 InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
 inputMethodManager.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
或尝试使用:

 rootLayout.requestFocus();

这会去哪里?在活动中或选项卡更改侦听器中?在您想要的地方,我想在ontabchange()中有人有任何想法或可以告诉我哪里出了问题吗?嗨,Mertuarez,我已经阅读了附加的链接,但我无法在活动中播放该代码,因为它没有EditText元素。问题仍然是按下选项卡时键盘无法关闭。由于某种原因,它一直存在,有什么想法吗?从布局中删除我没有任何观点
 rootLayout.requestFocus();