2015-01-15 105 views
-2

我在下面發佈的代碼,當我離開字段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

不是一個好問題。使用中斷 –

+2

switch-case **確實工作正常** ...如果您知道如何使用它! –

回答

1

你似乎錯過了幾個break語句。

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

@ user2121什麼更新? – Stultuske

4

你是不是每個case這會導致下面的情況下執行,即使你不希望他們以後使用break;。對於例如,這是正確的: -

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

,這將導致意外的輸出,雖然這是沒有錯: -

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

執行情況1.

後省略 break會導致案件2的執行