我正在尝试将添加文本更改的侦听器添加到我的代码中 我编辑文本,它自动将货币转换为SELECTED RADIO BUTTON(美元,欧元),而无需按下其中一个单选按钮,使其在textview中显示答案。
我不知道该怎么做 我是新的编程搜索谷歌没有找到答案
package com.gardana.superh;
public class ConvertActivity extends Activity {
TextView mResult;
EditText mToConvert;
RadioGroup mRadioGroup;
RadioButton mDollar, Meuro;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_convert);
mResult = (TextView) findViewById(R.id.result);
mToConvert = (EditText) findViewById(R.id.toConvert);
mRadioGroup = (RadioGroup) findViewById(R.id.radioG);
mDollar = (RadioButton) findViewById(R.id.dollar);
Meuro = (RadioButton) findViewById(R.id.euro);
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
public void onCheckedChanged(RadioGroup mradRadioGroup, int checkedId)
{
switch (checkedId)
{
case R.id.dollar:
Double dollarConvert = Double.valueOf(mToConvert.getText().toString()); //convert the string to int
double price = dollarConvert * 3.76;
mDollar.setChecked(true);
Meuro.setChecked(false);
mResult.setText("$"+price);
break;
case R.id.euro:
Double euroConvert = Double.valueOf(mToConvert.getText().toString()); //convert the string to int
double value = euroConvert * 5;
mDollar.setChecked(false);
Meuro.setChecked(true);
mResult.setText("€" + value);
Meuro.setChecked(false);
break;
default:;
}
}
});
}
}
答案 0 :(得分:1)
我建议你分解你的代码,以便更容易。首先,您需要添加两个侦听器,以便在需要时执行转换。
mToConvert.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable s) {
convertCurrentAmount();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup mradRadioGroup, int checkedId)
{
convertCurrentAmount();
}
});
因为你基本上会在两个地方做同样的工作,所以我建议你创建一个为你执行计算的方法。只要您想更新转换,就可以调用它。
public void convertCurrentAmount() {
int exchangeRate = -1;
String exchangeSymbol;
switch (mRadioGroup.getCheckedRadioButtonId()) {
case R.id.dollar:
exchangeRate = 3.76;
exchangeSymbol = "$";
break;
case R.id.euro:
exchangeRate = 5;
exchangeSymbol = "€";
break;
}
if (exchangeRate > 0 && exchangeSymbol != null) {
// Perform Calculation
}
}
我还在上面提到了一个关于如何重新设计你的交换机/案例以减少代码重复的建议,因为没有必要两次写同样的东西。