我正在编写自己的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 **/
我不明白为什么这样一个简单的例子不起作用。感谢任何帮助。