2017-03-14 74 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()); 
       } 

     } 
}); 

此代码工作的成功。