条件 'labelOk = true' 总是 'true'

condition 'labelOk = true' is always 'true'

如果五个独立验证器将它们的布尔值设置为 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的简化版本,但我想你会明白的。

通过 labelOk = true 将 labelOk 更改为 true!

您使用 = 而不是 ==。

另外,为什么你有一个 if-else 在两种情况下做同样的事情?

            if (s.hashCode() == inputLabel.hashCode()){
                labelOk = m.find();
            } else {
                labelOk = m.find();
            }

试试这个

if(labelOk) {
    //labelOk is true 
} else {
    //labelOk is false
}