当按钮点击时,我有错误实现隐藏键盘,任何人都知道如何解决这个问题?实际上是getSystemService和getWindowsToken中的代码错误
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_calculator, container, false);
Button hitung = (Button) rootView.findViewById(R.id.hitung);
final EditText height = (EditText)rootView.findViewById(R.id.height);
final EditText weight = (EditText)rootView.findViewById(R.id.weight);
InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(EditText.getWindowToken(), 0);
final TextView result = (TextView)rootView.findViewById(R.id.result);
final TextView finalresult = (TextView)rootView.findViewById(R.id.finalresult);
finalresult.setMovementMethod(new ScrollingMovementMethod());
hitung.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
..........
}
Run Code Online (Sandbox Code Playgroud)
你正在使用Fragment这样的写作getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)
原因相同:
一个Activity扩展了Context,一个Fragment没有.因此,您首先需要获得包含片段的Activity的引用
编辑
对于您可以使用的评论中提到的其他错误
getView().getWindowToken()
应该在你的button's onClick()方法中调用hide方法
imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
用这个,
public static void hideKeyboard(Context mContext) {
InputMethodManager imm = (InputMethodManager) mContext
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(((Activity) mContext).getWindow()
.getCurrentFocus().getWindowToken(), 0);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4626 次 |
| 最近记录: |