完成textview编辑时发生的事件-onfocuschange是否可以处于非活动状态?

uqcuzwp8  于 2021-06-29  发布在  Java
关注(0)|答案(0)|浏览(189)

android studio-java。在我的应用程序的个人资料页上,尝试了解编辑选项。我放置了textviews来显示当前信息,还可以输入newinfo和imagebuttons作为启动编辑过程的按钮。
其思想是当焦点从textview丢失时,validation+info更改过程开始。我相信我有一个问题,当按钮被点击时,它被认为是我的方法的一个事件,它应该在textview失去焦点后才被激活。
不过,我也尝试过将初始化事件设置为单击enter键,但也失败了。
以下是开始编辑的按钮:

editName.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            text_name_clone = text_name;
            text_name.setText("");
            text_name.setCursorVisible(true);
            text_name.setFocusableInTouchMode(true);
            text_name.setInputType(InputType.TYPE_CLASS_TEXT);
            text_name.requestFocus();
        }
    });

单击按钮后立即调用下面的命令,我需要找到一种方法使onfocuschange以某种方式处于非活动状态,直到它成为第一个焦点。我试着把它变成一个方法,然后按我的按钮,但没有成功:

text_name.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            if (!hasFocus) {
                if (text_name.equals("valid")) {
                    HashMap<String, Object> nameMap = new HashMap<>();
                    nameMap.put("name", text_name);
                    userRef.updateChildren(nameMap);
                    Toast.makeText(ProfileActivity.this, "Your name has been changed successfully!", Toast.LENGTH_SHORT).show();
                } else {
                    text_name = text_name_clone;
                    Toast.makeText(ProfileActivity.this, "Your name is not valid! Please try again!", Toast.LENGTH_SHORT).show();
                    text_name.requestFocus();
                }
            }
        }
    });

在这里,我尝试使用回车键作为我的事件,但没有结果:

text_number.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                //actions
                HashMap<String, Object> nameMap = new HashMap<>();
                nameMap.put("phoneNumber", text_number);
                userRef.updateChildren(nameMap);
                Toast.makeText(ProfileActivity.this, "Your phone number has been changed successfully!", Toast.LENGTH_SHORT).show();
                return true;
            }
            return false;
        }
    });

我的代码似乎匹配或接近匹配这个网站上的答案。我想我需要学习如何在不调用onfocuschange方法的情况下从按钮跳转到textview。如果有人有一个直接的解决方法,或者其他方法,我应该投入我的时间研究?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题