【发布时间】:2015-11-03 13:04:57
【问题描述】:
如果五个独立验证器将其布尔值设置为 true,我想启用我的按钮。但是如果我说if (labelOk == true){},我会看到标题中的信息。有什么问题?
public class AddDataFragment extends Fragment {
DbHelper mydb;
Button buttonadd;
Button buttondelete;
private String inputProduct = ("");
private EditText inputLabel;
//Validator booleans
boolean labelOk = false;
boolean serialOk= false;
boolean macOk= false;
boolean daaIdOk= false;
boolean billOk= false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add_data, container, false);
final Context context = getContext();
mydb = new DbHelper(context);
Log.d("labelOk am Ende", String.valueOf(labelOk));
buttonadd.setEnabled(true);
buttondelete.setEnabled(true);
//Initialize the input methods//////////////////////////////////////////////////////////////////////////////////////
//Label
inputLabel = (EditText) view.findViewById(R.id.editText_label);
inputLabel.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@Override
public void afterTextChanged(Editable s) {
Pattern p = Pattern.compile("^[A-Z]{3}-[0-9]{4}$");
Matcher m = p.matcher(s);
if (s.hashCode() == inputLabel.hashCode()){
labelOk = m.find();
} else {
labelOk = m.find();
}
Log.d("ButtonAdd aktiviert?", String.valueOf(labelOk));
}
});
if (labelOk = true){ /////////////////////////////////////////////////////HERE
buttonadd = (Button) view.findViewById(R.id.button_add_addData);
}
buttondelete = (Button) view.findViewById(R.id.button_delete_addData);
buttonadd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = getContext();
String product = inputProduct;
String label = inputLabel.getText().toString();
mydb.insertData(product, label);
inputLabel.setText("");
}
});
return view;
}
}
这是我的Fragment的缩写版本,但我想你会明白的。
【问题讨论】:
-
你写的是“if (labelOk = true)”而不是“if (labelOk == true)”
-
独立于你的问题:这部分没有意义:'if (s.hashCode() == inputLabel.hashCode()){' 使用
if (s.equals(inputLabel)否则你可能会得到错误的点击。除此之外,如果评估结果为真或假,您也在做同样的事情。 -
TextWatcher中的日志消息为我提供了正确的true或false条目。但最后labelOk总是true。不管我用==还是=。
标签: android validation fragment