android - 单击 Android Spinner 仅在模拟器上抛出 NullPointerException

标签 android nullpointerexception spinner emulation

我有一个带有动态项目的微调器。通过单击微调器,它将加载一组新的项目。它在实际设备上完美运行。但是当我在任何模拟器上运行该应用程序时,它会在我单击微调器后抛出 NullPointerException。 我还没有从任何人那里找到任何解决方案。有人可以帮帮我吗?

这是来自 LogCat 的错误(该错误对于不同设备和 API 级别的所有模拟器都是相同的——但不会在真实设备上发生。)。如您所见,它没有指向我的任何代码行。

java.lang.NullPointerException
at android.widget.Spinner.makeAndAddView(Spinner.java:534)
at android.widget.Spinner.layout(Spinner.java:485)
at android.widget.Spinner.onLayout(Spinner.java:449)
at android.view.View.layout(View.java:13754)
at android.view.ViewGroup.layout(ViewGroup.java:4362)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
at android.view.View.layout(View.java:13754)
at android.view.ViewGroup.layout(ViewGroup.java:4362)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:948)
at android.view.View.layout(View.java:13754)
...
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)

这是我将项目放入列表的方式。

List<MyObject> itemsList = getItemsFromMySource();
if (itemsList!=null && itemsList.size() > 0) {
    CustomListAdapter adapter = new CustomListAdapter(getActivity(), itemsList);
    mySpinner.setAdapter(adapter);
}

我的 CustomListAdapter 使用微调器的默认布局。

public class CustomListAdapter extends ArrayAdapter<MyObject> {

    public CustomListAdapter (Context context, List<MyObject> listItems) {
        super(context, android.R.layout.simple_spinner_item, listItems);
        setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    }


    @Override
    public View getView(final int item, View convertView, final ViewGroup parent) {
        final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(android.R.layout.simple_spinner_item, parent, false);

        final TextView text = (TextView) convertView.findViewById(android.R.id.text1);
        text.setText(getItem(item).getItemName());

        return convertView;
    }

    @Override
    public View getDropDownView(final int item, View convertView, final ViewGroup parent) {
        final LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(android.R.layout.simple_spinner_dropdown_item, parent, false);

        final TextView text = (TextView) convertView.findViewById(android.R.id.text1);
        text.setText(getItem(item).getItemName());

        return convertView;
    }

非常感谢任何帮助。

最佳答案

切勿将微调器适配器设置为空!

mySpinner.setAdapter(null);

我这样做是因为我需要在我的应用程序功能中使用它。所以我只是使用 mySpinner.setEnabled(false) 来妥协。

关于android - 单击 Android Spinner 仅在模拟器上抛出 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19710038/

相关文章:

c++ - QTableWidget 中的 QComboBox 和 QSpinBox 具有适当的对齐方式

ios - 在 Storyboard 中为 TableView 实现一个事件指示器

java - 线程上的数据库操作

android - Eclipse 中的 "Android Private Libraries"文件夹是什么?

android - 在 Android 中显示一个透明的 Activity?

java - 如何将 DecimalFormat 的小数点分隔符从逗号更改为点/点?

java - 什么是NullPointerException,我该如何解决?

java - 如何通过 Main - NullpointerException 错误更改进度条的值

java - 抛出 NullPointerException 但我不知道如何修复它。

android - 没有为我的微调器调用 OnItemSelectedListener()