编辑文本Onclick和键盘操作事件

时间:2016-12-08 08:28:52

标签: android

我想修改文字,但仅限于 onClick 事件,完成光标 公开 后, 错误 再次像之前一样。只有onClick事件会 显示 光标,并在完成输入后立即编辑 启用 并按下键盘操作按钮光标可见性 false 再次

这是Xml部分

<EditText
            android:id="@+id/pname"
            android:textStyle="bold"
            android:layout_toRightOf="@+id/profileimg"
            android:inputType="none"
            android:layout_marginBottom="15dp"
            android:layout_alignParentBottom="true"
            android:layout_marginLeft="15dp"
            android:textAllCaps="true"
            android:cursorVisible="false"
            android:background="@android:color/transparent"
            android:hint="@string/nickname"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLength="10"
            android:clickable="true"
            android:onClick="onClick"/>

这是编码部分:

pname = (EditText) findViewById(R.id.pname);

pname.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         pname.setInputType(0x0000006);
         pname.setCursorVisible(true);
     }
});
/*pname.setOnFocusChangeListener(new View.OnFocusChangeListener() {
     @Override
     public void onFocusChange(View v, boolean hasFocus) {
         if(hasFocus){
             pname.setCursorVisible(false);
         } else {
             pname.setCursorVisible(false);
         }
     }
});
*/

pname.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER || actionId ==EditorInfo.IME_ACTION_DONE) {
            if (!event.isShiftPressed()) {
                pname.setCursorVisible(false);
                return true; // consume.
            }
        }
        return false;
    }
});

问题/错误:似乎只要我完成输入并按键盘操作完成键,我的活动就会停止工作

例外:

  

java.lang.NullPointerException:尝试在packagename.MainActivity $ 2.onEditorAction(MainActivity.java:69)第69行的空对象引用上调用虚方法'int android.view.KeyEvent.getKeyCode()'

1 个答案:

答案 0 :(得分:1)

您没有查看收到的KeyEvent,但文档会阻止您:

  

KeyEvent:如果由回车键触发,则为事件;否则,这是空的。

因此,您需要检查这不是null以防止异常。

以下是Source