condition'labelOk = true'总是'true'
问题描述:
如果五个独立验证器将它们的布尔值设置为true,我想启用我的按钮。但如果我说if (labelOk == true){}
我收到标题中显示的消息。有什么问题?condition'labelOk = true'总是'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-else在两种情况下都做同样的事情?
if (s.hashCode() == inputLabel.hashCode()){
labelOk = m.find();
} else {
labelOk = m.find();
}
+1
......谢谢。那不是版本聪明的。有时候,即使我站在最前面,我也会犯这个错误 – Rastaman
答
U将labelOk更改为true by labelOk = true!
答
试试这个
if(labelOk) {
//labelOk is true
} else {
//labelOk is false
}
你写
“如果(labelOk =真)”,而不是 “如果(labelOk ==真)” –
独立你的问题:这部分是没有意义的: 'if(s.hashCode()== inputLabel.hashCode()){'use' if(s.equals(inputLabel)'否则你可能会得到错误的命中。除此之外,如果它的计算结果为true或false –
在我的'TextWatcher'中的日志消息给了我正确的'true'或'false'条目,但最后'labelOk'总是'true',不管我使用==还是'='。 – Rastaman