2013-04-16 23 views
1

我有一个自定义的虚拟键盘在Android中出现,当点击一个按钮时。设置android虚拟键盘的keyPreviewLayout导致崩溃

假如我用下面的语句android:keyPreviewLayout="@layout/mykeypreviewlayout" 一个keyPreviewLayout,包括在res/layout/mykeypreviewlayout.xml在运行时,当自定义软键盘上的一个键被触摸时,应用程序崩溃的一些布局语句。

以下是代码片段:以下是来自主要的xml文件。

<LinearLayout android:layout_height="wrap_content" 
    android:layout_gravity="bottom" 
    android:layout_width="wrap_content"> 
    <android.inputmethodservice.KeyboardView 
    android:id="@+id/keyboardView" android:visibility="gone" 
    android:focusable="true" android:focusableInTouchMode="true" 
    android:layout_height="wrap_content" android:layout_width="wrap_content" 
    android:keyPreviewLayout="@layout/mykeypreviewlayout" 
    android:layout_weight="0" /> 
    </LinearLayout> 

这里是从“XML代码RES /布局/ mykeypreviewlayout.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:textColor="@color/black"> </TextView> 

如果线路设定keyPreviewLayout attr为从上方KeyboardView布局除去,然后应用程序正常运行。但是,当按下按键反馈预览窗口弹出按下的字符上方时,窗口为空白,并且不显示任何字符 - 只出现一个带白色背景的小型矩形字符大小的弹出窗口。
如果我添加了设置keyPreviewLayout的行,那么当软键盘上的某个键被触摸时,该应用会崩溃。

这里是堆栈跟踪从logcat中转储(前几行是相关的),这表明飞机坠毁里面KeyboardView.java

04-17 07:41:47.346: E/AndroidRuntime(11901): FATAL EXCEPTION: main 
04-17 07:41:47.346: E/AndroidRuntime(11901): java.lang.NullPointerException 
04-17 07:41:47.346: E/AndroidRuntime(11901): at      android.inputmethodservice.KeyboardView.showKey(KeyboardView.java:918) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at  android.inputmethodservice.KeyboardView.access$100(KeyboardView.java:65) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at  android.inputmethodservice.KeyboardView$1.handleMessage(KeyboardView.java:251) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at  android.os.Handler.dispatchMessage(Handler.java:99) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at  android.os.Looper.loop(Looper.java:123) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at android.app.ActivityThread.main(ActivityThread.java:3683) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at java.lang.reflect.Method.invokeNative(Native Method) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at java.lang.reflect.Method.invoke(Method.java:507) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
04-17 07:41:47.346: E/AndroidRuntime(11901): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 

有没有人遇到过这种问题发生?任何帮助,将不胜感激。感谢

回答

4

你能尝试改变预览布局是这样的:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:background="@android:color/white" 
      android:textColor="@android:color/black" 
      android:gravity="center" 
      android:textSize="32sp" /> 

你不需要使用整个事情,只是在文字颜色字段更改为上面我所。它应该适合你。

+0

谢谢,这个工程。我确实使用了上述所有更改。将尝试只与颜色相关的东西。我不会长时间怀疑textColor! –