2015-01-15 6 views
-2

i ниже представленный код, когда я оставляю поле ip пустым/пустым и присваивает значения другим полям, toast всегда дает сообщение KATimer is invalid or missing.переключатель не работает должным образом

Я ожидал увидеть сообщение toast с сообщением о пустом поле, но приведенный ниже код, если какое-либо поле пуст, он всегда говорит KATimer is invalid or empty.

почему то happeneing, я что-то отсутствует

Код:

btnStubView_Connect:

btnStubView_Connect.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      if (isValidMQTTConfigs(etStubView_ip) && 
        isValidMQTTConfigs(etStubView_port) && 
        isValidMQTTConfigs(etStubView_ClientID) && 
        isValidMQTTConfigs(etStubView_KATimer)) { 

       Log.d(TAG, "@btnStubView_ConnectListener(): all entries are valid"); 
       setCSession(cbStubView_CS.isChecked()); // set the current state of the cleanSession checkBox. 
       addToContentValues(); 
       Log.d(TAG, "@btnStubView_ConnectListener(): all entries added toContentValues"); 

      } else { 
       Log.w(TAG, "@btnStubView_ConnectListener(): one or more entry(s) is invalid or left blank."); 
      } 
     } 
    }); 

isValidMQTTConfigs:

protected boolean isValidMQTTConfigs(View view) { 
    // TODO Auto-generated method stub 
    boolean valid = false; 
    String viewName = ""; 

    switch(view.getId()) { 
    case R.id.etSubView_ip: 
     viewName = "IP"; 
     if (isDuly(((EditText) view).getText().toString())) { 
      this.setIP(((EditText) view).getText().toString()); 
      return valid = true; 
     } 

    case R.id.etSubView_port: 
     viewName = "Port"; 
     if (isDuly(((EditText) view).getText().toString())) { 
      this.setPort(((EditText) view).getText().toString()); 
      return valid = true; 
     } 

    case R.id.etSubView_clientID: 
     viewName = "clientID"; 
     if (isDuly(((EditText) view).getText().toString())) { 
      this.setClienID(((EditText) view).getText().toString()); 
      return valid = true; 
     } 

    case R.id.etSubView_KATimer: 
     viewName = "KAtimer"; 
     if (isDuly(((EditText) view).getText().toString())) { 
      this.setKATimer(((EditText) view).getText().toString()); 
      return valid = true; 
     } 
    } 

    Log.w(TAG, "@checkMQTTConfigs(): " + viewName + " is invalid or missing"); 
    Toast.makeText(getActivity(), viewName + " is invalid or missing", Toast.LENGTH_SHORT).show(); 
    return valid; 
} 

isDuly:

private boolean isDuly(String text) { 
    // TODO Auto-generated method stub 
    if (text.trim().equals("")) { 
     return false; 
    } else { 
     return true; 
    } 
} 
+2

где перерыв; – PPD

+1

не очень хороший вопрос.use перерыв –

+2

переключатель-чехол ** действительно подходит ** ... если знаете, как его использовать! –

ответ

1

Кажется, что вам не хватает нескольких инструкций о разрыве.

Switch(X){ 
case 1: doOne(); 
case 2: doTwo(); 
case 3: doThree(); 
} 

поток водопада убеждается, что если X является 2, как doTwo и doThree будут выполнены. Если X равно 1, все три метода будут выполнены.

Если вы хотите только связанный метод можно назвать, изменить код в:

Switch(X){ 
case 1: doOne(); break; 
case 2: doTwo(); break; 
case 3: doThree(); break; 
} 
+0

@ пользователь2121 какой обновление? – Stultuske

4

Вы не используете break; после каждого case, который вызывает случаи ниже, чтобы выполнить, даже если вы не хотите их. Для, например, это правильно: -

switch(int){ 
    case 1: 
    break; 
    case 2: 
    break; 
} 

, и это вызовет неожиданный выход, хотя это не является неправильным: -

switch(int){ 
    case 1: 
    case 2: 
} 

Опуская break вызовет исполнение корпуса 2 после выполнения случая 1.

Смежные вопросы