如何从Spinner监听器调用方法 - Android

时间:2014-06-25 10:01:47

标签: android listener method-call

我想在下拉Spinner菜单中选择新单位时自动运行转换方法。代码可以使用新选择的选项更新TextView对象,以便侦听器正常工作。当我添加一个方法调用它崩溃了,应用程序甚至无法启动,任何想法为什么会这样?

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String str = ((TextView) view).getText().toString();
            unitsInput.setText(str); 

            convert();
        }

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

        } 

    });

我想我已经发现了问题,我在输入空间中的初始值是一个空字符串&#34;&#34;它在启动时并不高兴。

日志:

 06-25 10:36:47.340: E/AndroidRuntime(1312): java.lang.NumberFormatException: Invalid double: ""
06-25 10:36:47.340: E/AndroidRuntime(1312):     at java.lang.StringToReal.invalidReal(StringToReal.java:63)
06-25 10:36:47.340: E/AndroidRuntime(1312):     at java.lang.StringToReal.parseDouble(StringToReal.java:248)
06-25 10:36:47.340: E/AndroidRuntime(1312):     at java.lang.Double.parseDouble(Double.java:295)

在输入的EditText空间中将初始值设置为1已解决了问题并允许应用程序再次运行并在从下拉微调器中选择内容时运行convert()方法。

但是,如果要将初始输入留空或空白&#34;&#34;然后它仍然无法正常工作。如果我包含if语句如

 if(!"".equals(str)){
                convert();
            }

 if(!str.equals("")){
                convert();
            }

它在发布时崩溃。

有没有人知道如何使用Spinner侦听器和空字符串实现方法调用?

2 个答案:

答案 0 :(得分:1)

试试这个..

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        String str = ((TextView) view).getText().toString();
        unitsInput.setText(str); 

        if(!str.equals(""))
             convert();
    }

答案 1 :(得分:0)

就像更新一样,我得到了这个工作,因为我想为任何有类似问题的人使用以下代码

 spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            String str = ((TextView) view).getText().toString();
            unitsInput.setText(str); 

            if(!"".equals(valueInput.getText().toString())){
                convert();
            }
        }