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



我想编辑文本,但仅在> onclick 事件上,并完成光标可见度应该像以前一样是 false 。只有OnClick事件才能显示光标和编辑启用一完成输入并按下键盘操作按钮,它应该制作光标可见性 false 再次

这是XML Part

<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:尝试调用虚拟方法'int android.view.keyevent.getKeycode()'null对象引用的packagename.mainactivity $ 2.ONEDOTORACTION(MAINACTIVITION.JAVA:‌69)第69行号69)

您没有检查收到的KeyEvent,但DOC阻止了您:

keyEvent:如果由Enter密钥触发,则是事件;否则,这是null。

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

这是源

最新更新