捕获EditText失去焦点

Ed *_*ton 3 java android android-edittext

我是一名长期,自学成才的业余VB程序员,现在正在尝试自学Java和Android.我这样说,所以你会知道我不会说好语言,而且对这两种追求都是非常新的.

我开发了一个Android表单,其中包含一系列EditText框,每个框的内容都要在用户填写后保存到数组中.如果用户按下Enter键,我已经想出了如何做到这一点.但是,人们实际上并没有这样做:他们点击框,键入,然后单击下一个元素.

我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; 
} 
Run Code Online (Sandbox Code Playgroud)

请记住,我对此很新,我常常不确定在哪里放置代码片段以使它们工作(新文件?oncreate方法?谁知道).您可以给予我任何指导,我将非常感激和永远感激.

Ale*_*dam 6

让我们按部分去做:

  • "我可以为lostfocus事件编写代码.但我在Java中找不到类似的方法.":看一下OnFocusChangeListener API
  • "有没有办法在EditText失去焦点时捕获":是的,使用上面的监听器和 abstract void onFocusChange(View v, boolean hasFocus)
  • "请记住,我对此非常陌生":我们在某些时候都是新来的:)如果你是尊重的,并回馈社区(通过回答,或者简单地向上/向下投票并接受答案) ,没什么好担心的.

然后还有一些:

我和你一样是自学者,所以我现在感觉到你的痛苦,现在你想开始使用android时我想给你一些建议:你添加了两个标签:.用于桌面的java编码与为Android设备编码完全不同,因此请考虑到这一点.你真的要用java编写代码还是只用android代码?除了API中的一些明显差异外,主要区别在于用户交互.大多数java程序都期望全键盘和静态屏幕,而Android应用依赖于触摸,这是一个关键的区别.

触摸很重要,因为通常在没有焦点增益的情况下没有丢失焦点.一个典型的EditText将在IME上用手指填充,并且View将保持焦点,直到同一个手指触及另一个View(可能是EditText,可能是一个Button)."窗口"外通常没有点击.

另一方面,在Android设备中,您期望单个用户,而不是桌面上未知数量的用户.因此,保存数据并检索数据的处理方式完全不同(例如,请参阅使用"保存实例状态"保存Android活动状态)

您可以选择捕获焦点的获得/失去以执行操作,或者等到单击按钮,或者甚至使用其他方法(例如TextWatcher将数据保存在每个字符输入上).因此,您有很多选项可以设计您的应用.困难的部分是巧妙地设计.

祝好运!