上一篇 http://blog.csdn.net/r10101010/article/details/8727463
上一篇文章简单介绍了android IME的机制,本文将进一步介绍我在NDK开发中通过native c调用IME时碰到的问题和解决方法。
首先,native c无法从底层直接调用输入法,因此需要调用java来启动软键盘。如果大家有方法做到直接调用,不妨分享一下。进入主题...
步骤1,在java层创建View
我们知道java开发,创建和显示一个View很简单,直接Activity.setContentView(new View(Context))就OK了。所以,需要Activity来创建。好在android为native c提供了一个NativeActivity。有了这个Activity,那创建View也就不成问题了。
但问题出现了,按照以上的步骤NativeActivity.setContentView(view),程序执行到这里就挂了,实在无法理解。查找了许多资料后终于谜题,原因在于Activity.setContentView()必须在Android主线程调用,即UI主线程,而我的native c运行的是另外的线程,从而导致异常。so,必须切换到android UI线程
nativeActivity.runOnUiThread(new Runnable() {
public void run() {
nativeActivity.setContentView(view);
}
});