gpt4 book ai didi

java - Android 多重旋转器

转载 作者:行者123 更新时间:2023-12-02 09:08:53 25 4
gpt4 key购买 nike

我确信我错过了一些简单的东西,但我的代码存在一些逻辑问题。我正在开发一个转换器应用程序。我将使用两个旋转器来选择进行转换。前任。英寸换算为英尺。在充实所有代码之前,我使用两种简单的方法进行测试。现在,如果我先在应用程序中选择 SpinnerA 的值,然后选择 SpinnerB 的值,则不会计算。如果我先选择 SpinnerB,然后选择 SpinnerA,则它可以工作。我错过了什么?

    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) {
}
});
}

最佳答案

当您首先从 spinnerA 选择一个项目时,tempA 会被初始化,并且 spinnerA 的项目监听器会被调用,但 tempB 尚未初始化。然后,当您从 spinnerB 选择项目时,tempB 将被初始化,并调用 spinnerB 的项目监听器。在您的情况下,您只调用 spinnerA 的项目监听器方法中的方法,因此当您从 spinnerB 选择项目时,实际上不会执行任何操作。一种可能的解决方案是在 spinnerB 的项目监听器中调用所需的方法。

关于java - Android 多重旋转器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59573138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com