我是一名长期,自学成才的业余VB程序员,现在正在尝试自学Java和Android。我这样说,所以你会知道我不会说好语言,对这两种追求都是非常新的。
我开发了一个Android表单,其中包含一系列EditText框,每个用户填写后我希望保存到数组中的内容。如果用户按下该框,我已经想出了如何做到这一点。回车键。但是,人们实际上并没有这样做:他们点击框,键入,然后单击下一个元素。
我是VB,我可以为lostfocus事件编写代码。但我在Java中找不到类似的方法。
最后一个问题:是否有一种方法可以捕获EditText失去焦点的时间,因此我可以在不依赖Enter键的情况下保存该类型的类型数据?
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)){
Editable wasted=edittext_asset.getText();
vehdata[vehNo][Integer.parseInt((String) edittext_asset.getTag())]=wasted.toString();
return true;
}
return false;
}
请记住,我对此很新,我常常不确定在哪里放置代码片段以使它们工作(新文件?oncreate方法?谁知道)。您可以给予我任何指导,我将非常感激和永远感激。
答案 0 :(得分:6)
让我们按部分去做:
abstract void onFocusChange(View v, boolean hasFocus)
然后是一些:
我是一个自学者,所以我现在感受到你的痛苦,现在你想开始使用android时我想给你一些建议:你添加了两个标签:java和android。用于桌面的java编码与为Android设备编码完全不同,因此请考虑到这一点。你真的要用java编写代码还是只用android代码?除了API中的一些明显差异外,主要区别在于用户交互。大多数java程序都需要全键盘和静态屏幕,而Android应用依赖于触摸,这是一个关键的区别。
触摸非常重要,因为通常在没有其他视图的焦点增益的情况下不会失去焦点。一个典型的EditText将在IME上用手指填充,并且View将保持焦点,直到同一个手指触及另一个View(可能是EditText,可能是一个Button)。 “窗口”外通常没有点击。
另一方面,在Android设备中,您期望单个用户,而不是桌面上未知数量的用户。因此,保存数据并检索数据的处理方式完全不同(例如,参见Saving Android Activity state using Save Instance State)
您可以选择捕获焦点的获得/失去以执行操作,或者等到单击按钮,或者甚至使用其他方法(例如TextWatcher来保存每个字符输入上的数据)。因此,您有很多选项来设计您的应用。困难的部分是巧妙地设计。
祝你好运!答案 1 :(得分:1)
我刚刚做了类似的事情。我通过创建一个for循环来处理它,它只是通过id获取每个edittext的内容并将它的文本添加到数组中。我在onclick方法中这样做了,因为我在用户点击按钮后完成了所有操作。
String ohhai;
String duh = et.getText().toString();
int number = Integer.parseInt(duh);
List<String> myCollection=new ArrayList<String>();
EditText stuff;
int editt;
String loggy;
for(int z = 0; z < number; z++){
stuff = (EditText)findViewById(z);
editt = stuff.getId();
loggy = Integer.toString(editt);
Log.e("How Many", loggy);
ohhai = stuff.getText().toString();
myCollection.add(ohhai);
}
String [] arr = myCollection.toArray(new String[myCollection.size()]);
String separator = "0";
StringBuffer result = new StringBuffer();
if (arr.length > 0)
result.append(arr[0]);
for (int h=1; h < arr.length; h++) {
result.append(separator);
result.append(arr[h]);
}