添加OnItemSelectedListener时,应用程序崩溃

时间:2012-08-22 21:26:59

标签: java android

我最近对我制作的应用程序的iOS版本进行了更新,我想将相同的功能添加到Android版本中。基本上,它需要一年的用户输入,他们从列表中选择,然后将之前的年份输入到我指定的文本字段的占位符文本中。当我查看如何在Android中执行相同的功能时,我发现我需要一个OnItemSelectedListener。然而,那就是出现问题的时候。添加必要的代码并将AdapterView导入我的Activity后,我的应用程序在首次启动时不断崩溃。由于我不知道它在哪里崩溃,这里是我的应用程序的github页面的链接

Github Experimental branch

master分支上的代码运行正常,所以这很奇怪。

由于文件难以破译,以下是我用于应用OnItemSelectedListener的代码:

// give Spinner a listener for new functionality to work
selection.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parentView, 
                               View selectedItemView, int position, long id) {
        // get year selection for use with new functionality
        int iyear = Integer.parseInt(selection.getSelectedItem().toString()); 
        balance.setHint(R.string.balance + " from 12/31/" + pyear.getPrevYear(iyear)); 
    }
    // create empty method
    public void onNothingSelected(AdapterView<?> parentView) {}
});

3 个答案:

答案 0 :(得分:0)

确保setHint时var的余额不为空。可能是findViewById中的id不正确。 确保R.id.amount是R.layout.main中的视图。

答案 1 :(得分:0)

在追踪错误时,我仍然没有看到LogCat是重要的信息......

所以这些是我的猜测:

  • 我没有看到您为selection定义适配器的位置,因此我假设您在XML中执行此操作。您是否确认selection.getSelectedItem().toString()Integer.parseInt()的有效字符串?

    如果您有权访问该阵列(称之为selectionArray),您只需使用:

    ... + pyear.getPrevYear(selectionArray[position]);
    
  • R.string.balance是一个引用所需String的整数。要显示您想要使用getString(R.string.balance)或可能getResources().getString(R.string.balance)的字符串本身。

  • 确认您的所有变量都不为空:selectionbalancepyear

再解释第一点:

  1. 为数组和String创建一个类变量:

    int[] choicesArray;
    
  2. 在onCreate();

    中初始化它
    choicesArray = getResources().getIntArray(R.array.choices_array);
    
  3. 在OnItemSelectedListener中使用:

    balance.setHint(getResources().getString(R.string.balance) + " from 12/31/" + (choicesArray[position] - 1)); 
    

答案 2 :(得分:0)

我经历了从主分支复制的东西,事情开始工作而没有崩溃。现在,我对提示有疑问,但由于这个问题为什么它一直在崩溃,我不确定我是否可以保持这个问题。