Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 手动调用侦听器方法的错误做法_Java_Android_Listener - Fatal编程技术网

Java 手动调用侦听器方法的错误做法

Java 手动调用侦听器方法的错误做法,java,android,listener,Java,Android,Listener,我正在为editText编写两个侦听器: 一是 它实现切换到下一个EditText的代码,并启用自定义键盘。 二是 public void onClick(View v) 这将要求将焦点放在视图上,并启用自定义键盘。所以我可以像这样简单地调用onFocusChange(视图v,布尔hasFocus) onFocusChange(v, true); 它会完成它的工作 手动调用侦听器方法(而不抛出事件)是一种不好的做法,还是应该按照本文的建议编写一个单独的私有方法。哪种做法更好/更干净?我认为从

我正在为
editText
编写两个侦听器: 一是

它实现切换到下一个
EditText
的代码,并启用自定义键盘。 二是

public void onClick(View v)
这将要求将焦点放在视图上,并启用自定义键盘。所以我可以像这样简单地调用
onFocusChange(视图v,布尔hasFocus)

onFocusChange(v, true);
它会完成它的工作


手动调用侦听器方法(而不抛出事件)是一种不好的做法,还是应该按照本文的建议编写一个单独的
私有方法
。哪种做法更好/更干净?

我认为从功能上来说这无关紧要。然而,我认为监听应该在事件之后进行,因此编写一个私有方法来完成这项工作可能会更干净。为了重用,您可以让侦听器调用此方法

我认为这在功能上并不重要。然而,我认为监听应该在事件之后进行,因此编写一个私有方法来完成这项工作可能会更干净。为了重用,您可以让侦听器调用此方法

如果我理解正确,基本上您希望的是
EditText
具有焦点,这样它可以弹出键盘并移动到下一个字段,在这种情况下,您可以调用EditText上的
requestFocus()
。或者,您可能应该使用xml中的属性,如nextFocus*(Down/Left/Right/Up)来定义哪个
视图应该获得焦点。!是的,但是我必须调用不同的方法来启用自定义键盘。我已经在使用nextFocus函数了。这就是我将原始代码放入onFocusChange方法的原因。但是如果EditText已经有焦点,并且键盘被隐藏(手动完成),我不想只为此编写一个方法。我想在第一个列表中重用代码在这种情况下,就像@lordoku的回答一样,我建议使用
私有方法
,而不是调用
onFocusChange
。如果我理解正确,基本上,您希望的是
EditText
具有焦点,以便它可以弹出打开键盘并移动到下一个字段,在这种情况下,您可以在EditText上调用
requestFocus()
。或者,您可能应该使用xml中的属性,如nextFocus*(Down/Left/Right/Up)来定义哪个
视图应该获得焦点。!是的,但是我必须调用不同的方法来启用自定义键盘。我已经在使用nextFocus函数了。这就是我将原始代码放入onFocusChange方法的原因。但是如果EditText已经有焦点,并且键盘被隐藏(手动完成),我不想只为此编写一个方法。我想在第一个侦听器中重用代码在这种情况下,就像@lordoku的回答一样,我建议使用
私有方法
,而不是调用
onFocusChange
。好的,我将把代码放入私有方法中,并从两个侦听器调用它。不会有太多的工作,这将是一个问题,改变,谢谢!好的,我将把代码放入一个私有方法中,并从两个侦听器调用它。不会有太多的工作,这将是一个问题,改变,谢谢!
onFocusChange(v, true);