我正在尝试制作一个可以将里程转换为km的转换器,反之亦然,现在问题是每当我点击按钮时都没有发生任何事情。价值观保持不变。
我的代码是:
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 :(得分:2)
将if-else条件更改为此。
if (!editText.getText().toString().equals("") && editText2.getText().toString.equals("")) {
与另一个相似。
答案 1 :(得分: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());
}
}
});
希望这有帮助。
答案 2 :(得分:1)
正确调用了按钮的回调。你应该检查你的条件。
答案 3 :(得分:1)
editText2.getText()== null并且editText.getText()== null始终为false,因为此处getText()不能为null。
答案 4 :(得分:1)
请检查edittext值,而不是检查null。你的代码就像这样
if ((!TextUtils.isEmpty(editText.getText().toString()) && (TextUtils.isEmpty(editText2.getText().toString()))
Simillaraly修改另一个条件。
答案 5 :(得分:1)
将if-else条件更改为此。
if (!TextUtills.isEmpty(editText.getText().toString()) && !TextUtils.isEmpty(editText2.getText().toString)) {
}
答案 6 :(得分: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()
答案 7 :(得分:0)
您已经初始化了editText
和editText2
,这就是为什么你的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());
}
答案 8 :(得分: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());
}
}
});
此代码正常运作。