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。如果有人有一个直接的解决方法,或者其他方法,我应该投入我的时间研究?
暂无答案!
目前还没有任何答案,快来回答吧!