Android editbox lostfocus在错误的edittext框上激发
我有一个带有2个编辑文本框的简单应用程序。在第一个框中输入时,将执行一组计算。如果将输入放入另一个,则会出现一组不同的计算 因此,如果在第一个框etBox1中键入了一个数字,并且用户离开了该框,那么来自第一个框的数据将用于计算reesult并将其放入第二个框中。如果在第二个框etBox2中键入了一个数字,则该数据将用于计算第一个框的值 我试过:Android editbox lostfocus在错误的edittext框上激发,android,Android,我有一个带有2个编辑文本框的简单应用程序。在第一个框中输入时,将执行一组计算。如果将输入放入另一个,则会出现一组不同的计算 因此,如果在第一个框etBox1中键入了一个数字,并且用户离开了该框,那么来自第一个框的数据将用于计算reesult并将其放入第二个框中。如果在第二个框etBox2中键入了一个数字,则该数据将用于计算第一个框的值 我试过: final EditText etBox1 = (EditText) findViewById(R.id.etBox1) final EditText
final EditText etBox1 = (EditText) findViewById(R.id.etBox1)
final EditText etBox2 = (EditText) findViewById(R.id.etBox2)
etBox1.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
@override
public void onFocusChange(View v, boolean lostfocus)
{
if (lostFocus == true)
{ //do my calculations....}
当焦点被赋予etBox1时,而不是等待框失去焦点时,该命令将触发。这会导致应用程序崩溃,因为用户没有机会在框中输入数字。你知道为什么这是一个“hasFocus”而不是“lostFocus”吗?Android站点的lostFocus上没有可用的文档。在你的问题中,你有这个
final EditText etBox1 = (EditText) findViewById(R.id.etBox1);
final EditText etBox1 = (EditText) findViewById(R.id.etBox1);
映射文本框时使用相同的ID。我想应该是这样的:
final EditText etBox1 = (EditText) findViewById(R.id.etBox1);
final EditText etBox2 = (EditText) findViewById(R.id.etBox2);
更不用说,当您两次定义etBox1
时,您的代码也会出现编译错误…(除非这只是你问题中的一个输入错误,而且你的代码实际上看起来不一样…) onFocusChange被定义为公共抽象void onFocusChange(视图v,boolean hasFocus),因此称为lostFocus的布尔值命名为Backward,这让您很困惑,我建议将其更改为类似hasFocus的值
现在您应该看到,对于if语句是错误的,您应该检查if==false当etBox1获得焦点时,也可能是lostfocus触发了,而不是失去了焦点。我对该方法进行了如下修改,它成功了:@Override public void onFocusChange(View v,boolean hasFocus){if(hasFocus==false)…做点什么是的,我在问题上打了个错字,但不是在代码中。对不起,你的版本就是它的编码方式。@Ted Betz;如果是这样的话,你至少应该编辑你的问题,使你的问题代码与你的真实代码看起来一样正确。否则,人们可能会看到和我一样的代码,无法提供帮助我修改了方法如下:Bugger刚刚注意到你对主要问题的评论。