[英]spinner usage in android studio
我正在制作应用程序,人们可以在其中选择瓶子大小和名称。 然后用户按下购买按钮,程序会查看瓶子分配器中是否有任何这种类型的瓶子,如果为真,则购买一瓶。 这是微调器代码:(所有内容都在 onCreate 中,除了 @override -> 等等)
sizeSpinner = (Spinner) findViewById(R.id.spinner);
nameSpinner = (Spinner) findViewById(R.id.spinner2);
ArrayAdapter<CharSequence> arrayAdapter = ArrayAdapter.createFromResource(this, R.array.sizes, android.R.layout.simple_spinner_item);
arrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sizeSpinner.setAdapter(arrayAdapter);
sizeSpinner.setOnItemSelectedListener(this);
ArrayAdapter<CharSequence> arrayAdapterName = ArrayAdapter.createFromResource(this, R.array.bottleNames, android.R.layout.simple_spinner_item);
arrayAdapterName.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
nameSpinner.setAdapter(arrayAdapterName);
nameSpinner.setOnItemSelectedListener(this);
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
switch (parent.getId()) {
case R.id.spinner2:
selectedName = parent.getItemAtPosition(position).toString();
break;
case R.id.spinner:
selectedSize = parent.getItemAtPosition(position).toString();
break;
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
这是我的 string.xml :
<resources>
<string name="app_name">kappa8</string>
<string-array name = "sizes">
<item>small</item>
<item>medium</item>
<item>large</item>
</string-array>
<string-array name = "bottleNames">
<item>Pepsi Max</item>
<item>Coca-Cola Zero</item>
<item>Fanta Zero</item>
</string-array>
然后按下的按钮调用buyBottle 函数,该函数调用bottleDispenser (bd) 中的另一个buyBottle 函数
public void buyBottle(View v) {
if (bd.buyBottle(selectedSize, selectedName)){
bottleTextRefresh();
displayText.setText("Bought a bottle");
} else {
displayText.setText("Not enough MONEY or no such bottle found");
}
}
瓶子分配器中的buyBottle功能:
public boolean buyBottle(String size, String name) {
Double sizee = 0.0;
int indexOfBottle = -1;
String trimSize = size.trim();
System.out.println(size + " before if statements");
System.out.println("small" == trimSize);
if (trimSize == "large") {
sizee = 1.5;
System.out.println("This is big bottle");
}
if (trimSize == "medium") {
sizee = 1.0;
}
if (trimSize == "small") {
sizee = 0.5;System.out.println("This is small bottle");
}
System.out.println(sizee + " after if statement");
for (Bottle bottle : bottle_array) {
if ((bottle.getName() == name.toString()) && (bottle.getSize() == sizee)) {
indexOfBottle = bottle_array.indexOf(bottle);
System.out.println("bottle found");
}
}
if (indexOfBottle != -1) {
if (money < bottle_array.get(indexOfBottle).getCost()) {
System.out.println("Add money first!");
return false;
} else {
bottles -= 1;
money -= Math.round(bottle_array.get(indexOfBottle).getCost() * 100.0) / 100.0;
System.out.println("KACHUNK! " + bottle_array.get(indexOfBottle).getName() + " came out of the dispenser!");
bottle_array.remove(indexOfBottle);
return true;
}
} else {
System.out.println("missing bottle");
return false;
}
}
用户只能在 3 种尺寸之间进行选择,这就是我为每个尺寸都做了 if 语句的原因。 问题发生在 bd buyBottle 中,因为它不会从初始值更改 sizee (Double) 值。 我不知道为什么,但它不会将字符串或名称重新识别为普通字符串或名称。 例如,我从旋转器中选择了小芬达瓶子,但系统输出是这样的:
I/System.out: small before if statements
I/System.out: false
0.0 after if statement
missing bottle
当我做“小” == trimSize 部分时,它甚至说错误。 为什么会这样,主要是我该如何解决这个问题? 我不太确定问题出在哪里,所以我发布了一堆代码。
您需要使用 .equals() 函数来比较字符串。 像 if("medium".equals(trimSize)){ }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.