微调器仅在输出中显示第一个输入

时间:2014-04-30 09:09:26

标签: java android spinner

我做了一个旋转器,可以选择1项运动,它可以给你每小时的卡路里。我这样做了如下:

package com.test.moneyconverter;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

public class sport extends Activity  {

  Button mBtnCalculate;

  String Voetbal        =   "190";
  String Zwemmen        =   "240";
  String Fietsen        =   "480";
  String Hardlopen  =   "480";
  String Wandelen   =   "150";

  String Selected = spinner.getSelectedItem().toString();

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sport);
    getActionBar().setDisplayHomeAsUpEnabled(true);
    mBtnCalculate = (Button) findViewById(R.id.btnCalculate);

    ArrayAdapter myAdapter = new ArrayAdapter(this,
        android.R.layout.simple_spinner_item,
        new String[]{"Voetbal","Zwemmen","Fietsen","Hardlopen","Wandelen"});
    Spinner sport = (Spinner) findViewById(R.id.spinner);
    sport.setAdapter(myAdapter);
  }

  public void calculateTo(View view){
    if (view == mBtnCalculate){
      float calorien = Float.valueOf(Selected.toString());
      Toast.makeText(this, "je verbrand "  + calorien , Toast.LENGTH_LONG).show();   
    }        
  }
}   

它只显示第一个输出,总是Voetbal。我认为它不起作用,因为它没有选择输出?

1 个答案:

答案 0 :(得分:0)

我不是Android开发人员,因此我可能会错过您的代码中的其他一些问题,但是您似乎错误地认为Selected变量会在每个微调器时更新作用:

String Selected = spinner.getSelectedItem().toString();

此变量永远不会更改其值。相反,当用户按下按钮以获取当前值时,您需要调用spinner.getSelectedItem().toString()


这部分代码看起来也很奇怪:

float calorien = Float.valueOf(Selected.toString());

根据您对任务的描述,我希望您的微调器返回文本值,例如" Voetbal"这些不是浮动值,因此您无法以您的方式转换它们。也许您需要定义一个映射字符串的地图结构,例如" Voetbal"浮动值:

Map<String, Float> map = new HashMap<String, Float>() {{
  put("Voetbal", 190f);
  // etc.
}};