0

我在我的 Android 应用程序中遇到了问题。我需要创建一个开关,这样我就可以将多条消息放入一个处理程序中,而不是创建一百万个处理程序。这是我的代码:

String text1 = spinner1.getSelectedItem().toString().trim();
String text2 = spinner2.getSelectedItem().toString().trim();

dialog1 = ProgressDialog.show(getActivity(), "", "Calculating...");

        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(0);
                    convertvalues("USD", "EUR");
                    }
                    catch (Exception e) {

                    }

                }
            });
            thread.start();
        }

public Handler handler = new Handler () {
    public void handleMessage(android.os.Message msg) {
        dialog1.dismiss();
        convertvalues("USD", "EUR");
        }
    }
;

这可行,但我想为多个 if 语句创建更多消息,如下所示:

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(0);
                    convertvalues("USD", "EUR");
                    }
                    catch (Exception e) {

                    }

                }
            });
            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(0);
                    convertvalues2("EUR","USD");
                    }
                    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(0);
                    convertvalues("EUR","USD");
                    }
                    catch (Exception e) {

                    }

                }
            });
            thread.start();
        }

我如何实现这一目标?是带开关还是别的。任何帮助是极大的赞赏。

PS因为我是初学者,如果你也发布代码和你的答案会很棒。那很好啊。再次感谢您。

4

2 回答 2

0

Java 中的 Switch 语句适用于整数和枚举以及一些其他类型

因此,在您的情况下,您可能想要设置一个枚举来保存您可能想要打开的可能值。

    public enum Currency{
    USD, 
    EUR
}

private void test(Currency currency){
    switch (currency){
    case USD:
        doUsdStuff();
        break;
    case EUR:
        doEurStuff();
        break;
    }
}

或者,您可以声明 int 值而不是枚举。

由于您有两个值,您可能会执行两个 switch 语句,保存每个语句的值,然后使用保存的值调用 convertValues()。

于 2013-08-04T23:47:42.267 回答
0

您将改用变量。尝试提取变化的东西,并围绕它构建代码。在您的情况下,调用会convertvalues2有所不同,因此请提取变量的参数并使用它们。

final String fromCurrency = text1.substring(text1.length() - 3);
final String toCurrency = text2.substring(text2.length() - 3);
new Thread(new Runnable() {
    @Override
    public void run() {
        try{
            handler.sendEmptyMessage(0);
            convertvalues2(fromCurrency, toCurrency);
        }
        catch (Exception e) {
        }
     }
});
于 2013-08-04T23:58:54.893 回答