Android非常量表达式:迁移必要

时间:2013-05-08 21:01:34

标签: android eclipse api

我被告知由于API 14的更改,我必须将我的switch语句更改为If-Else语句。

很好。

什么不工作是当我把我的插入符号放在switch语句上并根据说明按CTRL-1我没有选择时,我顺便使用Ubuntu,有什么建议吗?

我也试过清理我的项目。

修改。它适用于所有其他switch语句,而不是这里包含的语句:

public void onClick(View v) {
        switch (v.getId()) {

        case R.id.btnCalcCalories:
            double weight = Integer.parseInt(etWeight.getText().toString());
            double bodyfat = Integer.parseInt(etBodyfat.getText().toString());
            ;
            lbm = weight * (100 - bodyfat) / 100;
            bmr = 370 + (21.6 * lbm);
            maintCals = bmr * actLevel;

            maintCalories
                    .setText("Calories need to maintain current bodyweight: "
                            + String.valueOf(maintCals));

            lbmResult.setText("Your Lean Body Mass is " + String.valueOf(lbm)
                    + "Kg");
            bmrResult.setText("Your Base Metabolic rate is "
                    + String.valueOf(bmr) + " calories");
            calorieResult.setText("Your Daily calorie goal is "
                    + String.valueOf(finalGPercentage) + " calories");
            break;
        case R.id.btnUpdateDB:
            boolean worked = true;
            try {
                String dbWeight = curWeight.getText().toString();
                String dbWaist = curWaist.getText().toString();
                String dbChest = curChest.getText().toString();
                String dbLegs = curLegs.getText().toString();
                String dbArms = curArms.getText().toString();

                Stats entry = new Stats(MainActivity.this);
                entry.open();
                entry.createEntry(dbWeight, dbWaist, dbChest, dbArms, dbLegs);
                entry.close();
                break;
            } catch (Exception e) {
                worked = false;
                String error = e.toString();
                Dialog d = new Dialog(this);
                d.setTitle("Error");
                TextView tv = new TextView(this);
                tv.setText(error);
                d.setContentView(tv);
                d.show();
            } finally {
                if (worked) {
                    Dialog d = new Dialog(this);
                    d.setTitle("DB Worked");
                    TextView tv = new TextView(this);
                    tv.setText("Success");
                    d.setContentView(tv);
                    d.show();
                }
            }

        case R.id.btnViewDB:
            Intent i = new Intent("com.uhi.fatfighter.DBView");
            startActivity(i);
            break;
        case R.id.btnStopwatchActivity:
            Intent s = new Intent("com.uhi.fatfighter.Stopwatch");
            startActivity(s);
            break;
        case R.id.btnMapARun:
            Intent m = new Intent("com.uhi.fatfighter.MapRun");
            startActivity(m);
            break;
        case R.id.btnWeightConverter:
            Intent w = new Intent("com.uhi.fatfighter.WeightConverter");
            startActivity(w);
            break;
        }

    }

2 个答案:

答案 0 :(得分:4)

在我的项目属性中,我将我的Google-libs检查为'is library',取消选中此项并修复了问题。

答案 1 :(得分:0)

  1. 问题是Eclipse是愚蠢的。如果你想做这样的酷事,你应该使用IntelliJ IDEA。

  2. 不要忘记调用 trim()方法删除尾随空格。

    double weight = Integer.parseInt(etWeight.getText()。toString());

  3. 使用幻数并不是一种好方法。

    bmr = 370 +(21.6 x lbm);

  4. 捕获root 异常并不是一种好方法。

    catch(例外e)

  5. 从不在finally块中显示Dialog,此时您的应用程序可能会崩溃。