我有一些带有EditTexts的片段。当我在第一个片段的EditText中写文本时,我打开下一个片段。如何隐藏键盘?
我这样做:
public static void hideSoftKeyboard(Activity activity) {
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
}
但如果我返回第一个片段并再次打开下一个片段焦点丢失。我有错误。
我找到了
EditText myEditText = (EditText) findViewById(R.id.myEditText);
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
但我在片段上有很多字段,而且有许多字段片段。我不想要重复的代码。
我的错误是:
java.lang.NullPointerException
at com.skip.client.customer.utils.Utils.hideSoftKeyboard(Utils.java:13)
at com.skip.client.customer.fragments.auth_fragments.SignUpChooseTypeAuthFragment$EventHandler.onValidationSucceeded(SignUpChooseTypeAuthFragment.java:102)
at com.mobsandgeeks.saripaar.Validator.triggerValidationListenerCallback(Validator.java:673)
at com.mobsandgeeks.saripaar.Validator.validateFieldsWithCallbackTill(Validator.java:651)
at com.mobsandgeeks.saripaar.Validator.validateUnorderedFieldsWithCallbackTill(Validator.java:633)
at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:313)
at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:274)
at com.skip.client.customer.fragments.auth_fragments.SignUpChooseTypeAuthFragment$EventHandler.onClick(SignUpChooseTypeAuthFragment.java:89)
at android.view.View.performClick(View.java:4637)
at android.view.View$PerformClick.run(View.java:19422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5586)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
您可以将java.lang.NumberFormatException: For input string: "\Users\you\Documents\NetBeansProjects\Tester2\dist"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at com.sun.deploy.security.DeployManifestChecker.verifyCodebaseEx(Unknown Source)
at com.sun.deploy.security.DeployManifestChecker.verifyCodebase(Unknown Source)
at com.sun.deploy.security.DeployManifestChecker.verify(Unknown Source)
at com.sun.deploy.security.DeployManifestChecker.verify(Unknown Source)
at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
at com.sun.javaws.Launcher.prepareResources(Unknown Source)
at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main.access$000(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
传递给View
方法,并从hideSoftKeyboard
getContext()获取上下文。
View
需要说传递public static void hideSoftKeyboard(View view) {
InputMethodManager inputMethodManager =
(InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
可能是一个坏主意,因为这可能需要memory leaks,这很难调试和修复。
答案 1 :(得分:0)
试
public static void hideSoftKeyboard(Activity activity, View view) {
if(activity!= null && !activity.isFinish() && view != null)
{
InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
答案 2 :(得分:0)
使用此代码
private void hideSoftKeyBoard(ScrollView view){
InputMethodManager inputManager = (InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
这对我有用。
答案 3 :(得分:0)
尝试以下为我工作
public static void hideSoftKeyboard(Activity activity) {
if (null != activity.getWindow()){
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
}
}
答案 4 :(得分:0)
public static void hideKeyboard(Activity activity) {
// Check if no view has focus:
View view = activity.getCurrentFocus();
if (view != null) {
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}