解析spinner2的听众里面spinner1目前项目 [英] Parsing spinner1's current item inside of spinner2's listener

查看:314
本文介绍了解析spinner2的听众里面spinner1目前项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我怎样才能得到spinner1的位置spinner2的onItemSelected监听器里面,这样我可以转换为字符串并解析计算?

我目前试图调用adapterSpinner2.getItemAtPosition()spinner1里面,但我得到一个:无效的浮动:logcat的错误。在那里我试图打电话adapterSpinner2行了。

我知道我的数组,我打电话是所有数字,所以它不应该是单纯的空字段错误。我里面spinner1的onItemSelected听者spinner1的解析工作得很好,所以我相信这是在我试图打电话spinner2。

很抱歉,如果这是一个有点混乱,任何帮助将大大AP preciated。

 公共类碎裂扩展片段实现AdapterView.OnItemSelectedListener {微调atmosphereSpinner;
微调pressurelossSpinner;串AtmosphereSpinner;
字符串pressureLossSpinner;@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){
    查看查看= inflater.inflate(R.layout.fragment_a,集装箱,FALSE);    atmosphereSpinner =(微调)view.findViewById(R.id.atmosphereSpinner);
    pressurelossSpinner =(微调)view.findViewById(R.id. pressurelossSpinner);    最后ArrayAdapter<&CharSequence的GT; adapterAtmosphere = ArrayAdapter.createFromResource(getActivity(),R.array.atmosphere_array,android.R.layout.simple_spinner_item);
    最后ArrayAdapter<&CharSequence的GT;适配器pressureLoss = ArrayAdapter.createFromResource(getActivity(),R.array pressure_loss_array,android.R.layout.simple_spinner_item);    atmosphereSpinner.setAdapter(adapterAtmosphere);
    pressurelossSpinner.setAdapter(适配器pressureLoss);    atmosphereSpinner.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){
        @覆盖
        公共无效onItemSelected(适配器视图<>适配器视图,视图观点,诠释POS,长L){
            AtmosphereSpinner = adapterView.getItemAtPosition(POS)的ToString();
            浮气氛= Float.parseFloat(AtmosphereSpinner);            pressureLossSpinner = pressurelossSpinner.getItemAtPosition(POS)的ToString();
            浮pressureloss = Float.parseFloat(pressureLossSpinner);
            如果(布尔值为true){
              //做计算
            }        }        @覆盖
        公共无效onNothingSelected(适配器视图<>适配器视图){
        }    });    pressurelossSpinner.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){
        @覆盖
        公共无效onItemSelected(适配器视图<>适配器视图,视图观点,诠释POS,长L){            AtmosphereSpinner = atmosphereSpinner.getItemAtPosition(POS)的ToString();
            浮气氛= Float.parseFloat(AtmosphereSpinner);            pressureLossSpinner = adapterView.getItemAtPosition(POS)的ToString();
            浮pressureloss = Float.parseFloat(pressureLossSpinner);            如果(布尔为true){
             //做计算
            }        }        @覆盖
        公共无效onNothingSelected(适配器视图<>适配器视图){
        }    });

logcat的:

  11月7日至25日:53:16.142 858-858 / com.example.jstazak.ctsleaktester E / AndroidRuntime:致命异常:主要
    java.lang.NumberFormatException:无效的浮动:
            在java.lang.StringToReal.invalidReal(StringToReal.java:63)
            在java.lang.StringToReal.parseFloat(StringToReal.java:289)
            在java.lang.Float.parseFloat(Float.java:300)
            在com.example.FragmentA $ 2.onItemSelected(FragmentA.java:97)
            在android.widget.AdapterView.fireOnSelected(AdapterView.java:892)
            在android.widget.AdapterView.access $ 200(AdapterView.java:49)
            在android.widget.AdapterView $ SelectionNotifier.run(AdapterView.java:860)
            在android.os.Handler.handleCallback(Handler.java:615)
            在android.os.Handler.dispatchMessage(Handler.java:92)
            在android.os.Looper.loop(Looper.java:137)
            在android.app.ActivityThread.main(ActivityThread.java:4745)
            在java.lang.reflect.Method.invokeNative(本机方法)
            在java.lang.reflect.Method.invoke(Method.java:511)
            在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)
            在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            在dalvik.system.NativeStart.main(本机方法)63号线是这一行:pressureLossSpinner = pressurelossSpinner.getItemAtPosition(POS)的ToString();


解决方案

在第二微调 onItemSelected 做到这一点。

  AtmosphereSpinner = atmosphereSpinner.getSelectedItem()的toString();

您可以得到所选择的第一个微调的值

而不是

  AtmosphereSpinner = atmosphereSpinner.getItemAtPosition(POS)的ToString();

编辑:

1.Place字符串漂浮在尝试捕捉转换。如果出现异常就会去catch块。有分配这些彩车 0.0 别的尝试将其转换双击而不是浮动

2,code段为字符串浮动转换纺纱中的 onItemSelected

  atmosphereSpinner.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){
        @覆盖
        公共无效onItemSelected(适配器视图<>适配器视图,视图观点,诠释POS,长L){
            浮动的气氛; //这是更好,如果你全局声明这些变量2
            浮pressureloss;            。AtmosphereSpinner = atmosphereSpinner.getSelectedItem()的toString();
            如果(!AtmosphereSpinner.equalsIgnoreCase())
                气氛= Float.parseFloat(AtmosphereSpinner);
            其他
                大气= 0.0;            pressureLossSpinner = pressurelossSpinner.getSelectedItem()的toString()。
            如果(!pressureLossSpinner.equalsIgnoreCase())
                pressureloss = Float.parseFloat(pressureLossSpinner);
            其他
                pressureloss = 0.0;            如果(布尔值为true){
              //做计算
            }        }        @覆盖
        公共无效onNothingSelected(适配器视图<>适配器视图){
        }    });


  

执行相同的第二微调也


How can I get spinner1's position inside of spinner2's onItemSelected listener so that I can convert to a string and parse for a calculation?

I am currently attempting to call adapterSpinner2.getItemAtPosition() inside of spinner1 but am getting an: Invalid float: "" logcat error. on the line where I am trying to call adapterSpinner2.

I know that my array that I am calling is all numbers, so it should not be simply an empty field error. My parse of spinner1 inside of spinner1's onItemSelected listener works fine so I believe it is in where I am trying to call spinner2.

Sorry if that is a bit confusing, any help would be greatly appreciated.

public class FragmentA extends Fragment implements AdapterView.OnItemSelectedListener{

Spinner atmosphereSpinner;
Spinner pressurelossSpinner;

String AtmosphereSpinner;
String PressureLossSpinner;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_a, container, false);

    atmosphereSpinner = (Spinner) view.findViewById(R.id.atmosphereSpinner);
    pressurelossSpinner = (Spinner) view.findViewById(R.id.pressurelossSpinner);

    final ArrayAdapter<CharSequence> adapterAtmosphere = ArrayAdapter.createFromResource(getActivity(), R.array.atmosphere_array, android.R.layout.simple_spinner_item);
    final ArrayAdapter<CharSequence> adapterPressureLoss = ArrayAdapter.createFromResource(getActivity(), R.array.pressure_loss_array, android.R.layout.simple_spinner_item);

    atmosphereSpinner.setAdapter(adapterAtmosphere);
    pressurelossSpinner.setAdapter(adapterPressureLoss);

    atmosphereSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l){


            AtmosphereSpinner = adapterView.getItemAtPosition(pos).toString();
            float atmosphere = Float.parseFloat(AtmosphereSpinner);

            PressureLossSpinner = pressurelossSpinner.getItemAtPosition(pos).toString();
            float pressureloss = Float.parseFloat(PressureLossSpinner);


            if (Boolean is True){
              //Do calculation
            }

        }

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

    });

    pressurelossSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {


        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l){

            AtmosphereSpinner = atmosphereSpinner.getItemAtPosition(pos).toString();
            float atmosphere = Float.parseFloat(AtmosphereSpinner);

            PressureLossSpinner = adapterView.getItemAtPosition(pos).toString();
            float pressureloss = Float.parseFloat(PressureLossSpinner);

            if (Boolean is true){
             //Do calculation
            }

        }

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

    });

Logcat:

07-25 11:53:16.142      858-858/com.example.jstazak.ctsleaktester E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NumberFormatException: Invalid float: ""
            at java.lang.StringToReal.invalidReal(StringToReal.java:63)
            at java.lang.StringToReal.parseFloat(StringToReal.java:289)
            at java.lang.Float.parseFloat(Float.java:300)
            at com.example.FragmentA$2.onItemSelected(FragmentA.java:97)
            at android.widget.AdapterView.fireOnSelected(AdapterView.java:892)
            at android.widget.AdapterView.access$200(AdapterView.java:49)
            at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:860)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4745)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
            at dalvik.system.NativeStart.main(Native Method)

Line 63 is this line:                 PressureLossSpinner = pressurelossSpinner.getItemAtPosition(pos).toString();

解决方案

In second spinner onItemSelected do this

AtmosphereSpinner = atmosphereSpinner.getSelectedItem().toString();

You can get the value of first spinner which is selected

Instead of

AtmosphereSpinner = atmosphereSpinner.getItemAtPosition(pos).toString();

EDIT :

1.Place String to float conversion in try catch. If exception occur it will go to catch block. There assign those floats 0.0f else try to convert it double instead of float.

2.Code snippet for String to float conversion in spinners' onItemSelected

atmosphereSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long l){
            float atmosphere; // It is better if you declare these 2 variables globally
            float pressureloss ;

            AtmosphereSpinner = atmosphereSpinner.getSelectedItem().toString();
            if(!AtmosphereSpinner.equalsIgnoreCase(""))
                atmosphere = Float.parseFloat(AtmosphereSpinner);
            else
                atmosphere = 0.0f;

            PressureLossSpinner = pressurelossSpinner.getSelectedItem().toString();
            if(!PressureLossSpinner.equalsIgnoreCase(""))
                pressureloss = Float.parseFloat(PressureLossSpinner);
            else
                pressureloss = 0.0f;

            if (Boolean is True){
              //Do calculation
            }

        }

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

    });

Do the same for second spinner also

这篇关于解析spinner2的听众里面spinner1目前项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆