我正在编写自己的代码InputMethodService
,并且我想基本上检测键盘何时上下弹出以开始和停止做事。我有最简单的“MyInput”类,它做的很少:
public class MyInput extends InputMethodService {
private static final String TAG = "MyInput";
@Override
public View onCreateInputView() {
Log.d(TAG, "onCreateInputView");
LayoutInflater inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
return inflater.inflate(R.layout.my_keyboard, null);
}
@Override
public void onStartInput(EditorInfo attribute, boolean restarting) {
super.onStartInput(EditorInfo attribute, boolean restarting);
Log.d(TAG, "onStartInput restarting = " + restarting);
}
@Override
public void onFinishInput() {
super.onFinishInput();
Log.d(TAG, "onFinishInput");
}
}
我的视图正常上下弹出,但在日志中,我可以看到一个非常奇怪的行为。每次键盘显示或隐藏时,都会调用这两个函数;让我无法检测到它何时实际显示。
/** Keyboard not showing, I press an TextView **/
D onFinishInput
D onStartInput restarting = false
/** Keyboard showing, I press back **/
D onFinishInput
D onStartInput restarting = false
/** Keyboard not showing **/
我不明白为什么这样一个简单的例子不起作用。谢谢你的帮助