Android 与旋转器操作混淆
我正在做一些计算,旋转器是我使用的东西之一 这是我能做的最好的事情:Android 与旋转器操作混淆,android,Android,我正在做一些计算,旋转器是我使用的东西之一 这是我能做的最好的事情: public class Price1 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.price1
public class Price1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.price1);
int price1 = getIntent().getExtras().getInt("theprice");
int price2 = calculateprice2(price1);
TextView tvprice1 = (TextView) findViewById(R.id.price1text2);
tvprice1.setText(String.valueOf(price2));
}
private int calculateprice2(int price1) {
Spinner sp1 = (Spinner) findViewById(R.id.spinner1);
if (sp1.getSelectedItemPosition() == 1) {
return (int) (price1 - (price1 / 10));
} else if (sp1.getSelectedItemPosition() == 2) {
return (int) (price1 - (price1 / 5));
} else if (sp1.getSelectedItemPosition() == 3) {
return (int) (price1 - ((price1 * 3) / 10));
} else if (sp1.getSelectedItemPosition() == 4) {
return (int) (price1 - ((price1 * 33) / 100));
}
}
阅读代码。我想你会理解我的目标的(我希望你能理解,因为当你的英语非常糟糕的时候,很难解释:-)
问题是我在“calculateprice2(int price2)”中遇到了这个错误:
“此方法必须返回int类型的结果”
我知道我的错误很愚蠢,但我找不到它
谢谢。要修复编译错误,
calculateprice2()
如果条件不匹配,则不会返回任何内容。在这种情况下,您可能需要返回一些合理的默认值,例如添加
return 0;
在方法的末尾
要使其按您可能希望的方式运行,请注意以下几点:
- 项目位置从索引0开始,而不是从1开始
onCreate()
仅在创建活动时运行。要在更改选择时运行该方法,请查看setOnItemSelectedListener()
你喜欢这样吗-
private int calculateprice2(float price20) {
Spinner sp1 = (Spinner) findViewById(R.id.spinner1);
Integer price1 = getIntent().getExtras().getInt("theprice");
if (sp1.getSelectedItemPosition() == 1) {
return (int) (price1 - (price1 / 10));
} else if (sp1.getSelectedItemPosition() == 2) {
return (int) (price1 - (price1 / 5));
} else if (sp1.getSelectedItemPosition() == 3) {
return (int) (price1 - ((price1 * 3) / 10));
} else if (sp1.getSelectedItemPosition() == 4) {
return (int) (price1 - ((price1 * 33) / 100));
}
else {
return 0;
}
}
加
在calculateprice2()函数的末尾。您可以看到,您的函数并非在所有情况下都返回值。如果没有更正任何if/else
语句,则应提供默认返回值。例如,您可以声明一个retVal
变量:
private int calculateprice2(int price1) {
Spinner sp1 = (Spinner) findViewById(R.id.spinner1);
int retVal = 0;
if (sp1.getSelectedItemPosition() == 1) {
return (int) (price1 - (price1 / 10));
} else if (sp1.getSelectedItemPosition() == 2) {
return (int) (price1 - (price1 / 5));
} else if (sp1.getSelectedItemPosition() == 3) {
return (int) (price1 - ((price1 * 3) / 10));
} else if (sp1.getSelectedItemPosition() == 4) {
return (int) (price1 - ((price1 * 33) / 100));
}
return retVal;
}
在这种情况下,我将始终在TextView中获得0。在这种情况下,我将始终在TextView中获得0。如果上述条件均不满足,则为是。在这种情况下,我将始终在TextView中获得0。在这种情况下,我将始终在TextView中获得0。这可能是因为作为参数发送的price1中的值无效。添加其他内容与此无关!请检查getIntent().getExtras().getInt(“价格”)是否发送了正确的值。还可以查看spinner是否有4个以上的选项。抱歉,我在语法中没有看到任何问题。在没有匹配的情况下返回0,0是int。哦,天哪,我看起来太傻了。很抱歉我已经改正了,谢谢提醒。
private int calculateprice2(int price1) {
Spinner sp1 = (Spinner) findViewById(R.id.spinner1);
int retVal = 0;
if (sp1.getSelectedItemPosition() == 1) {
return (int) (price1 - (price1 / 10));
} else if (sp1.getSelectedItemPosition() == 2) {
return (int) (price1 - (price1 / 5));
} else if (sp1.getSelectedItemPosition() == 3) {
return (int) (price1 - ((price1 * 3) / 10));
} else if (sp1.getSelectedItemPosition() == 4) {
return (int) (price1 - ((price1 * 33) / 100));
}
return retVal;
}