繁体   English   中英

android studio 中的微调器使用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM