我做了一个旋转器,可以选择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。我认为它不起作用,因为它没有选择输出?
答案 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.
}};