내 처리기에서 스위치/사례 구문이 작동하지 않는 Android 응용 프로그램에서 문제가 발생했습니다. switch/case 문을 수행 한 주된 이유는 내가 가지고있는 핸들러의 양을 제한하는 것입니다.처리기에서 switch/case 문을 수행 할 수 없습니다.
if (text1.equals("US Dollar - USD") && text2.equals("Euro - EUR")
&& edittextdollars.length() > 0
&& edittexteuros.length() == 0) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
handler.sendEmptyMessage(2);
convertvalues("USD", "EUR");
img1.setImageDrawable(grabImageFromUrl(imageUrl1));
} catch (Exception e) {
edittexteuros.setText("Error");
}
}
});
thread.start();
}
if (text1.equals("US Dollar - USD") && text2.equals("Euro - EUR")
&& edittexteuros.length() > 0
&& edittextdollars.length() == 0) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
handler.sendEmptyMessage(3);
convertvalues2("EUR", "USD");
img1.setImageDrawable(grabImageFromUrl(imageUrl2));
} catch (Exception e) {
}
}
});
thread.start();
}
if (text1.equals("Euro - EUR") && text2.equals("US Dollar - USD")
&& edittextdollars.length() > 0
&& edittexteuros.length() == 0) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
handler.sendEmptyMessage(4);
convertvalues("EUR", "USD");
img1.setImageDrawable(grabImageFromUrl(imageUrl2));
} catch (Exception e) {
}
}
});
thread.start();
}
if (text1.equals("Euro - EUR") && text2.equals("US Dollar - USD")
&& edittexteuros.length() > 0
&& edittextdollars.length() == 0) {
convertvalues2("USD", "EUR");
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
handler.sendEmptyMessage(5);
convertvalues2("USD", "EUR");
img1.setImageDrawable(grabImageFromUrl(imageUrl2));
} catch (Exception e) {
}
}
});
thread.start();
}
if (text1.equals("Euro - EUR") && text2.equals("Euro - EUR")
&& edittextdollars.length() > 0
&& edittexteuros.length() == 0) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
handler.sendEmptyMessage(6);
convertEurostoEuros();
//img1.setImageDrawable(grabImageFromUrl(imageUrl1));
} catch (Exception e) {
}
}
});
thread.start();
}
if (text1.equals("Euro - EUR") && text2.equals("Euro - EUR")
&& edittexteuros.length() > 0
&& edittextdollars.length() == 0) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
handler.sendEmptyMessage(7);
OppositeOfConvertEurostoEuros();
} catch (Exception e) {
}
}
public Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
dialog1.dismiss();
try {
switch (msg.what) {
case 2:
img1.setImageDrawable(grabImageFromUrl(imageUrl1));
convertvalues("USD", "EUR");
break;
case 3:
convertvalues2("EUR", "USD");
img1.setImageDrawable(grabImageFromUrl(imageUrl2));
break;
case 4:
convertvalues("EUR", "USD");
img1.setImageDrawable(grabImageFromUrl(imageUrl2));
break;
case 5:
convertvalues2("USD", "EUR");
img1.setImageDrawable(grabImageFromUrl(imageUrl2));
break;
case 6:
convertEurostoEuros();
break;
case 7:
OppositeOfConvertEurostoEuros();
break;
case 8:
convertDollarstoDollars();
break;
} catch (Exception e) {
e.printStackTrace();
}
}
};
public String convertvalues(String convertfrom, String convertto) {
double current;
double val = Double.parseDouble(edittextdollars.getText()
.toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
try {
current = ycc.convert(convertfrom, convertto);
edittexteuros.setText(df.format(val * current));
return "passed";
} catch (Exception e) {
return "passed";
}
}
public String convertvalues2(String convertfrom2, String convertto2) {
double current;
double val = Double.parseDouble(edittexteuros.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
YahooCurrencyConverter ycc = new YahooCurrencyConverter();
try {
current = ycc.convert(convertfrom2, convertto2);
edittextdollars.setText(df.format(val * current));
return "passed";
} catch (Exception e) {
return "passed";
}
}
protected void convertEurostoEuros() {
double val = Double.parseDouble(edittextdollars.getText()
.toString());
DecimalFormat df = new DecimalFormat(".##");
edittexteuros.setText(df.format(val*1));
}
protected void convertDollarstoDollars() {
double val = Double.parseDouble(edittextdollars.getText()
.toString());
DecimalFormat df = new DecimalFormat(".##");
edittexteuros.setText(df.format(val*1));
}
protected void OppositeOfConvertEurostoEuros() {
double val = Double.parseDouble(edittexteuros.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
edittextdollars.setText(df.format(val * 1));
}
protected void OppositeOfConvertDollarstoDollars() {
double val = Double.parseDouble(edittexteuros.getText().toString());
DecimalFormat df = new DecimalFormat(".##");
edittextdollars.setText(df.format(val * 1));
}
내 응용 프로그램이 수행하는 것은 내가 JPY으로 INR의 환율을 찾으려는 경우에도이 EUR에 USD의 환율을 찾을 것입니다 : 여기에 내 코드의 내 역할이다. 왜 이렇게합니까? 그것은 제가 처리기에 넣은 첫 번째 사건이기 때문에입니까? 이 문제와 관련된 도움을 주시면 감사하겠습니다.
handleMessage에는 try 블록이 있지만 아무것도 잡을 수 없습니다. 이것이 왜 그리고 이것이 어떻게 컴파일 되는가? – Mastergeek
나는 그렇지만 나는 그것을 보여주지 않았다. – user2507301
@Mastergeek 귀하의 의견에 따라 제 코드를 업데이트했습니다. – user2507301