我最近对我制作的应用程序的iOS版本进行了更新,我想将相同的功能添加到Android版本中。基本上,它需要一年的用户输入,他们从列表中选择,然后将之前的年份输入到我指定的文本字段的占位符文本中。当我查看如何在Android中执行相同的功能时,我发现我需要一个OnItemSelectedListener。然而,那就是出现问题的时候。添加必要的代码并将AdapterView导入我的Activity后,我的应用程序在首次启动时不断崩溃。由于我不知道它在哪里崩溃,这里是我的应用程序的github页面的链接
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) {}
});
答案 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)
的字符串本身。
selection
,balance
和pyear
。再解释第一点:
为数组和String创建一个类变量:
int[] choicesArray;
在onCreate();
中初始化它choicesArray = getResources().getIntArray(R.array.choices_array);
在OnItemSelectedListener中使用:
balance.setHint(getResources().getString(R.string.balance) + " from 12/31/" + (choicesArray[position] - 1));
答案 2 :(得分:0)
我经历了从主分支复制的东西,事情开始工作而没有崩溃。现在,我对提示有疑问,但由于这个问题为什么它一直在崩溃,我不确定我是否可以保持这个问题。