Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改自定义键盘键';是java类的背景吗?_Java_Android_Xml_Keyboard_Custom Keyboard - Fatal编程技术网

如何更改自定义键盘键';是java类的背景吗?

如何更改自定义键盘键';是java类的背景吗?,java,android,xml,keyboard,custom-keyboard,Java,Android,Xml,Keyboard,Custom Keyboard,我正在开发一个android键盘,当按下一个特定的键时,我需要改变一个键的背景。我尝试在mykeyboard.java文件中执行此操作: private KeyboardView kv; (...) kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null); kv.setOnKeyboardActionListener(this); keyboard = new Keyboard(this, qwerty);

我正在开发一个android键盘,当按下一个特定的键时,我需要改变一个键的背景。我尝试在mykeyboard.java文件中执行此操作:

private KeyboardView kv;
(...)
kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
kv.setOnKeyboardActionListener(this);
keyboard = new Keyboard(this, qwerty);
kv.setKeyboard(keyboard);
kv.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        (...)

        (v.findViewById(R.id.myKeyId)).setBackgroundColor(Color.BLUE);
        }
}
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="6.25%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"
    android:keyHeight="5%p">

    <Row>
        <Key> (...) android:id"@+id/myKeyId" (...) />
    </Row>

</Keyboard>
但这种错误会发生:

᠎java.lang.NullPointerException: 尝试在空对象引用上调用虚拟方法“void android.view.view.setBackgroundColor(int)” 在com.mtsolutions.mykeyboard.mykeyboard$1.onTouch(mykeyboard.java:87)

这是哪一行:

(v.findViewById(R.id.myKeyId)).setBackgroundColor(Color.BLUE);
这是res/layout/keyboard.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<android.inputmethodservice.KeyboardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/keyboard"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:keyPreviewHeight="0dp"/>

其中是res/xml/qwerty.xml文件中的一些代码:

private KeyboardView kv;
(...)
kv = (KeyboardView)getLayoutInflater().inflate(R.layout.keyboard, null);
kv.setOnKeyboardActionListener(this);
keyboard = new Keyboard(this, qwerty);
kv.setKeyboard(keyboard);
kv.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        (...)

        (v.findViewById(R.id.myKeyId)).setBackgroundColor(Color.BLUE);
        }
}
<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
    android:keyWidth="6.25%p"
    android:horizontalGap="0px"
    android:verticalGap="0px"
    android:keyHeight="5%p">

    <Row>
        <Key> (...) android:id"@+id/myKeyId" (...) />
    </Row>

</Keyboard>

(…)android:id“@+id/myKeyId”(…)/>
我做错了什么

谢谢

kv.setBackgroundColor(Color.BLUE);
不要使用复杂的代码,而是这样做

不要使用复杂的代码,而是这样做