Java 带有单选按钮的TextWatcher实现
请参阅附件中的图片和代码片段以帮助解释。 从所附图像中,我希望用户输入成本,数量,然后选择包含税或排除税,在指示的位置自动生成新成本,无需按下Java 带有单选按钮的TextWatcher实现,java,android,android-fragments,textwatcher,android-textwatcher,Java,Android,Android Fragments,Textwatcher,Android Textwatcher,请参阅附件中的图片和代码片段以帮助解释。 从所附图像中,我希望用户输入成本,数量,然后选择包含税或排除税,在指示的位置自动生成新成本,无需按下按钮,但我无法这样做。有人请帮忙。谢谢 请看这里的图片 在实施建议的更改并尝试在成本字段中输入输入后,我遇到了如下所示的错误。请提供额外的反馈。谢谢 错误图像 将rgroup.setOnCheckedChangeListener移出update()方法并移到onCreateView()中。您不必每次更新文本时都设置侦听器 如果输入了有效值并且选中了其中
按钮
,但我无法这样做。有人请帮忙。谢谢
请看这里的图片
在实施建议的更改并尝试在成本字段中输入输入后,我遇到了如下所示的错误。请提供额外的反馈。谢谢
错误图像
将
rgroup.setOnCheckedChangeListener
移出update()方法并移到onCreateView()中。您不必每次更新文本时都设置侦听器
如果输入了有效值并且选中了其中一个复选框,则在文本输入后调用的更新方法可能只更新税务值
用其他建议更新
我将通过比较文本来查找单选按钮,因为您正在这样做,将来可能需要更改资源文件中的文本或应用其他区域设置,而此代码将停止工作
if(rb.getText() == "Include Tax")
我建议与id本身进行比较:
if (checkedId == R.id.radio1 )
另一个建议:
考虑将变量名更改为以小写字母开头。以大写字母开头使其看起来像类名或常量,并使代码更难阅读
private EditText itemText;
private EditText editCost;
private EditText editQuantity;
private EditText calcost;
private EdtiText rTax;
您还可以删除所有(部分)焦点更改侦听器,并在android drawable资源中设置这些属性。看一看
更新9/9/2016 22:22
更好一点,但正如您所发现的,如果rb从未初始化过,对update的调用可能会抛出一个空指针。您应该在update方法中检查null rb,并通知用户选择一个选项。您还可以在onCreateView中从一开始就将rb分配给这两个值中的任何一个,这样它就永远不会为null
在无线组回调中设置rb之后,您可能还应该添加对update()的调用。这将允许屏幕在选择选项后立即更新。将
rgroup.setOnCheckedChangeListener
移出update()方法,并移到onCreateView()中。您不必每次更新文本时都设置侦听器
如果输入了有效值并且选中了其中一个复选框,则在文本输入后调用的更新方法可能只更新税务值
用其他建议更新
我将通过比较文本来查找单选按钮,因为您正在这样做,将来可能需要更改资源文件中的文本或应用其他区域设置,而此代码将停止工作
if(rb.getText() == "Include Tax")
我建议与id本身进行比较:
if (checkedId == R.id.radio1 )
另一个建议:
考虑将变量名更改为以小写字母开头。以大写字母开头使其看起来像类名或常量,并使代码更难阅读
private EditText itemText;
private EditText editCost;
private EditText editQuantity;
private EditText calcost;
private EdtiText rTax;
您还可以删除所有(部分)焦点更改侦听器,并在android drawable资源中设置这些属性。看一看
更新9/9/2016 22:22
更好一点,但正如您所发现的,如果rb从未初始化过,对update的调用可能会抛出一个空指针。您应该在update方法中检查null rb,并通知用户选择一个选项。您还可以在onCreateView中从一开始就将rb分配给这两个值中的任何一个,这样它就永远不会为null
在无线组回调中设置rb之后,您可能还应该添加对update()的调用。这将允许屏幕在他们选择选项后立即更新