et1 = (EditText) findViewById(R.id.et1);
et2 = (EditText) findViewById(R.id.et2);
floatET1 = Float.parseFloat(et1.getText().toString());
floatET2 = Float.parseFloat(et2.getText().toString());
et1.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
float sonuc1 = floatET2 * 60;
et2.setText(sonuc1);
}
}
});
et2.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
float sonuc2 = floatET1 / 60;
et1.setText(sonuc2);
当我点击EditText(et2)然后我想计算到分钟,当我点击EditText(et1)然后转换为小时...但我不工作:/
答案 0 :(得分:1)
您过早收到edittext内容。将涉及getText()
的部分移动到焦点更改侦听器。
答案 1 :(得分:1)
这可以做你想要的,虽然你可能想要用吐司消息或其他东西通知用户,而不是在输入值不是有效字符串时悄悄地做什么。
et1 = (EditText) findViewById(R.id.et1);
et2 = (EditText) findViewById(R.id.et2);
et1.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
try {
floatET2 = Float.parseFloat(et2.getText().toString());
} catch (NumberFormatException e) {
}
float sonuc1 = floatET2 * 60;
et1.setText(String.valueOf(sonuc1));
}
}
});
et2.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
try {
floatET1 = Float.parseFloat(et1.getText().toString());
} catch (NumberFormatException e) {
}
float sonuc2 = floatET1 / 60;
et2.setText(String.valueOf(sonuc2));
}
}
});
答案 2 :(得分:0)
您需要检查edittext的输入类型。 如果用户输入的值如1.6,那么您的代码无效。 因此,请确保提供输入类型,然后您可以根据逻辑来计算分钟数。
答案 3 :(得分:0)
你需要搬家:
floatET1 = Float.parseFloat(et1.getText().toString());
floatET2 = Float.parseFloat(et2.getText().toString());
进入每一个
public void onFocusChange(View v, boolean hasFocus) {
}
因为您需要在每次焦点更改时获取文本。
然后你应该将操作的结果转换为String(你试图在setTex()方法中设置一个浮点值):
et1.setText(""+sonuc2);
et2.setText(""+sonuc1);
或
et1.setText(sonuc2.toString());
et2.setText(sonuc1.toString());