Android 在片段中使用InputMethodManager

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

我正在尝试使用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(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(..)
?工作得很好!非常感谢。