简体   繁体   English

Android 多微调器

[英]Android Multiple Spinner

I'm sure I'm missing something simple, but I am having some logic issues with my code.我确定我遗漏了一些简单的东西,但是我的代码有一些逻辑问题。 I am working on a converter app.我正在开发一个转换器应用程序。 I will be using two spinners to select between to do conversions.我将使用两个微调器在进行转换之间进行选择。 Ex.前任。 inches to feet.英寸到英尺。 I am using two simple methods to test before fleshing out all of the code.在充实所有代码之前,我使用两种简单的方法进行测试。 Right now if I select the value for SpinnerA in the app first, and then select the value for SpinnerB, it doesn't calculate.现在,如果我先在应用程序中选择 SpinnerA 的值,然后选择 SpinnerB 的值,它不会计算。 If I select SpinnerB first and then SpinnerA, it works.如果我先选择 SpinnerB,然后选择 SpinnerA,它就可以工作。 What am I missing?我错过了什么?

    spinnerA = (Spinner)getView().findViewById(R.id.spinnerA);
    spinnerB = (Spinner)getView().findViewById(R.id.spinnerB);
    adapterA = ArrayAdapter.createFromResource(getContext(),
            R.array.conversions, android.R.layout.simple_spinner_item);
    adapterA.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    adapterB = ArrayAdapter.createFromResource(getContext(),
            R.array.conversions, android.R.layout.simple_spinner_item);
    adapterB.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    spinnerA.setAdapter(adapterA);
    spinnerB.setAdapter(adapterB);

    spinnerA.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            tempA = parent.getItemAtPosition(position).toString();

            if (tempA.equals("Inches") && tempB.equals("Centimeters")){
                    textView.setText(String.valueOf(halfMyNum(100)));
            }

            else if (tempA.equals("Centimeters")){
                if (tempB.equals("Inches")){
                    textView.setText(String.valueOf(doubleMyNum(12)));
                }
            }

            else{
                textView.setText("Please select a valid option");
            }



            //Toast.makeText(getContext(), parent.getItemAtPosition(position)+ " Selected"
            //, Toast.LENGTH_LONG).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

spinnerB.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        tempB = parent.getItemAtPosition(position).toString();

    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
    }
});
}

When you are selecting an item from spinnerA first, tempA is initialized and item listener for spinnerA is called but tempB is not yet initialized.当您首先从 spinnerA 中选择一个项目时,tempA 被初始化并调用 spinnerA 的项目侦听器,但 tempB 尚未初始化。 Then, when you select item from spinnerB, tempB is initialized and item listener for spinnerB is called.然后,当您从 spinnerB 选择项目时,tempB 将被初始化并调用 spinnerB 的项目侦听器。 In your case, you only called the method in item listener method for spinnerA, so when you select item from spinnerB nothing actually executes.在您的情况下,您只在 spinnerA 的项目侦听器方法中调用了该方法,因此当您从 spinnerB 中选择项目时,实际上没有执行任何操作。 One possible solution is to call the desired method in item listener for spinnerB as well.一种可能的解决方案是在项目侦听器中为 spinnerB 调用所需的方法。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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