2015-11-03 67 views
-2

如果五个独立验证器将它们的布尔值设置为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的缩短版本,但我认为你会得到它。

+5

“如果(labelOk =真)”,而不是 “如果(labelOk ==真)” –

+0

独立你的问题:这部分是没有意义的: 'if(s.hashCode()== inputLabel.hashCode()){'use' if(s.equals(inputLabel)'否则你可能会得到错误的命中。除此之外,如果它的计算结果为true或false –

+0

在我的'TextWatcher'中的日志消息给了我正确的'true'或'false'条目,但最后'labelOk'总是'true',不管我使用==还是'='。 – Rastaman

回答

1

您使用=而不是==。

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

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

......谢谢。那不是版本聪明的。有时候,即使我站在最前面,我也会犯这个错误 – Rastaman

0

U将labelOk更改为true by labelOk = true!

0

试试这个

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