2017-03-14 76 views
-1

我試圖做一個轉換器,它可以英里轉換爲公里,反之亦然,現在的問題是,每當我點擊按鈕什麼也沒有發生。價值觀保持不變。按鈕沒有做任何事情

我的代碼是:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.EditText; 


public class Distance extends Fragment { 


    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     View v = inflater.inflate(R.layout.activity_distance, container, false); 
     Button button = (Button) v.findViewById(R.id.button12); 
     final EditText editText = (EditText) v.findViewById(R.id.edittext1); 
     final EditText editText2 = (EditText) v.findViewById(R.id.edittext2); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (editText.getText() != null && editText2.getText() == null) { 
        String s = editText.getText().toString(); 
        Double d = Double.parseDouble(s) * 0.621371; 
        editText2.setText(d.toString()); 
       } else if (editText2.getText() != null && editText.getText() == null) { 
        String s = editText2.getText().toString(); 
        Double d = Double.parseDouble(s)/0.621371; 
        editText.setText(d.toString()); 
       } 

      } 
     }); 
     return v; 
    } 


} 
+0

第二的EditText可能不是空 – mehulmpt

+1

'的getText()'不會返回'null'。最糟糕的情況是它返回一個emtpy列表。 –

+0

它是空...我已經檢查 –

回答

2

更改您的if-else條件這一點。

if (!editText.getText().toString().equals("") && editText2.getText().toString.equals("")) { 

和其他類似。

+0

感謝您的回答,我想再問一個問題,如果我有多個edittext,並且我想在英里,英寸,釐米,光年等轉換一公里。 if()條件會很長,有沒有辦法避免它。? –

+0

@AlpitAnand在事件處理程序中獲取數組中所有edittext的值,並根據需要迭代它們。 – mehulmpt

+0

Okie,m試試..謝謝,它幫了很多。 :-) –

1

全球第一聲明:

EditText editText ; 
EditText editText2; 

然後在onCreateView:

editText = (EditText) v.findViewById(R.id.edittext1); 
editText2 = (EditText) v.findViewById(R.id.edittext2); 

最後,使用此代碼:

button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if (editText.getText().toString().equals("") && editText.getText().toString().equals("")) { 
        String s = editText.getText().toString(); 
        Double d = Double.parseDouble(s) * 0.621371; 
        editText2.setText(d.toString()); 
       } else if (editText2.getText().toString().equals("") && editText.getText().toString().equals("")) { 
        String s = editText2.getText().toString(); 
        Double d = Double.parseDouble(s)/0.621371; 
        editText.setText(d.toString()); 
       } 

      } 
     }); 

希望這有助於。

1

你的按鈕的回調被正確調用。你應該檢查你的條件。

0

您已經初始化了editTexteditText2這就是爲什麼你的if和else條件不滿足並且你的代碼沒有響應。

final EditText editText = (EditText) v.findViewById(R.id.edittext1); 
final EditText editText2 = (EditText) v.findViewById(R.id.edittext2); 

而且你的條件不低於碼匹配的:

if (editText.getText() != null && editText2.getText() == null) { 
String s = editText.getText().toString(); 
Double d = Double.parseDouble(s) * 0.621371; 
editText2.setText(d.toString()); 
} else if (editText2.getText() != null && editText.getText() == null) { 
String s = editText2.getText().toString(); 
Double d = Double.parseDouble(s)/0.621371; 
editText.setText(d.toString()); 
} 
1

editText2.getText()== NULL和editText.getText()== NULL總是假的,因爲的getText()不能這裏是null。

1

而不是檢查空,請與價值觀的EditText檢查。您的代碼將是這樣的

if ((!TextUtils.isEmpty(editText.getText().toString()) && (TextUtils.isEmpty(editText2.getText().toString())) 

同步修改另一個條件。

1

更改您的if-else條件這一點。

if (!TextUtills.isEmpty(editText.getText().toString()) && !TextUtils.isEmpty(editText2.getText().toString)) { 

} 
1
if (!editText.getText().toString().isEmpty() && editText2.getText() .toString().isEmpty()) { 
       String s = editText.getText().toString(); 
       Double d = Double.parseDouble(s) * 0.621371; 
       editText2.setText(d.toString()); 
      } else if (!editText2.getText().toString().isEmpty() && editText.getText().toString().isEmpty()) { 
       String s = editText2.getText().toString(); 
       Double d = Double.parseDouble(s)/0.621371; 
       editText.setText(d.toString()); 
      } 

而不是使用string.equals( 「」),這是明智的使用string.isEmpty()

0
Button button = (Button) findViewById(R.id.button12); 
final EditText editText = (EditText) findViewById(R.id.edittext1); 
final EditText editText2 = (EditText) findViewById(R.id.edittext2); 

button.setOnClickListener(new View.OnClickListener() { 
@Override 
     public void onClick(View v) { 
      if (!editText.getText().toString().equals("") && editText2.getText().toString().equals("")) { 

        String s = editText.getText().toString(); 
        Double d = Double.parseDouble(s) * 0.621371; 
        editText2.setText(d.toString()); 
       } else if (!editText2.getText().toString().equals("") && editText.getText().toString().equals("")) { 
        String s = editText2.getText().toString(); 
        Double d = Double.parseDouble(s)/0.621371; 
        editText.setText(d.toString()); 
       } 

     } 
}); 

此代碼工作的成功。