Android 在片段中使用InputMethodManager
我正在尝试使用seekbar,以便用户可以调整片段中edittext框的值。这里是我使用它的地方:Android 在片段中使用InputMethodManager,android,android-fragments,Android,Android Fragments,我正在尝试使用seekbar,以便用户可以调整片段中edittext框的值。这里是我使用它的地方: ... //NOTE: This is in the onCreateView() method for a Fragment button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { seekBar.setProgress(see
...
//NOTE: This is in the onCreateView() method for a Fragment
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
seekBar.setProgress(seekBar.getProgress() + 1);
editText.setText(String.valueOf(seekBar.getProgress()));
//Hidden method call not needed to be visible...
//Notice the InputMethodManager, also, this is line 197...
InputMethodManager imm = (InputMethodManager) context.getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(seekBar.getWindowToken(), 0);
}
});
...
以下是Logcat输出:
03-09 00:00:41.164 573-573/com.hidden.hidden E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at com.hidden.hidden.hidden.onClick(Hidden.java:197)
at android.view.View.performClick(View.java:3480)
at android.view.View$PerformClick.run(View.java:13983)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4340)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
请注意,出于安全原因,包名称是隐藏的
感谢您的帮助
编辑:请注意,在第197行,我没有“上下文”。在这里。它给了我和错误,所以我声明了一个如下的全局变量:Context代码>试试这个
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
seekBar.setProgress(seekBar.getProgress() + 1);
editText.setText(String.valueOf(seekBar.getProgress()));
try{
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(seekBar.getWindowToken(), 0);
}catch(Exception e){
e.printStackTrace();
}
}
});
给我一些反馈
Context context = getActivity(); //since you're in a fragment
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
seekBar.setProgress(seekBar.getProgress() + 1);
editText.setText(String.valueOf(seekBar.getProgress()));
InputMethodManager imm = (InputMethodManager) context.getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(seekBar.getWindowToken(), 0);
}
});
EDIT:不要在onAttach()之前调用getActivity()
。否则将返回null。第197行是哪一行?您想做什么?清楚的first@AndyFaizan请参阅编辑…@SimplePlan我正在尝试使用seekbar编辑文档中的文本edittext@AndrewQ如果我知道197行是哪一行..看起来context
实例是空的,你能尝试用getActivity().getSystemService()
替换context.getSystemService(..)
?工作得很好!非常感谢。