Android 更改微调器文本颜色时的空指针

Android 更改微调器文本颜色时的空指针,android,nullpointerexception,android-spinner,Android,Nullpointerexception,Android Spinner,我有一个包含4个选项卡的活动。 在某些选项卡中,我有一个微调器,可以通过以下代码更改文本颜色: mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position,

我有一个包含4个选项卡的活动。 在某些选项卡中,我有一个微调器,可以通过以下代码更改文本颜色:

mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            //((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249));
            ((TextView) parentView.getChildAt(0)).setTextColor(Color.BLACK);
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            //DO NOTHING
        }
    });
我不知道为什么

我已经尝试过使用布尔变量,比如

if(!alreadyChangedColor)
    ((TextView) parentView.getChildAt(0)).setTextColor(Color.BLACK);
但它只在我第一次显示微调器时更改颜色,在我更改选项卡后,文本将返回到其原始颜色

编辑

我使用的是默认微调器,唯一需要更改的是蓝线

XML中的微调器:

<Spinner
    android:id="@+id/paymentMethodValue"
    android:layout_width="280dp"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/paymentMethodText"
    android:layout_alignLeft="@+id/ibanValue"
    android:layout_alignStart="@+id/ibanValue"
    android:layout_toRightOf="@+id/paymentMethodText"
    android:entries="@array/arrayPaymentMethods"
    android:focusable="false"
    android:textSize="12pt" />
编辑/2

我想我找到了一个解决办法:

在我第一次创建活动时,使用变量保留selectedView,然后在onItemSelectedListener中使用该变量

下面是一些代码:

private View _selectedItemView;
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        if (selectedItemView != null){
            _selectedItemView = selectedItemView;
            ((TextView) selectedItemView).setTextColor(Color.BLACK);
        } else {
            ((TextView) _selectedItemView).setTextColor(Color.BLACK);
        }
    }

希望它能帮助别人而不是我

selectedItemView.setTextColorColor.BLACK不存在。TextViewselectedItemView.setTextColorColor.BLACK;在进行颜色更改之前,是否尝试检查getChildAt0是否为null?我已经有一段时间没有这样做了,但我想我也遇到了类似的问题,在列出任何项之前,onItemSelected被调用。@JaredRummler:我第一次调用onItemSelectedListener parentView.getChildAt0时,与selectedView相同,它有一些值,但当我第二次调用它时,它给我一个空引用。调试并查看,是什么原因造成的。
      private TextView _selectedItemView;
      mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                   _selectedItemView= (TextView) parent.getItemAtPosition(pos);
                   _selectedItemView.setTextColor(Color.BLACK);
                }

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

                }
            });
Spinner mySpinner = (Spinner) container.findViewById(R.id.mySpinnerValue);
ArrayAdapter mySpinnerAdapter = (ArrayAdapter) mySpinner.getAdapter();
private View _selectedItemView;
mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        if (selectedItemView != null){
            _selectedItemView = selectedItemView;
            ((TextView) selectedItemView).setTextColor(Color.BLACK);
        } else {
            ((TextView) _selectedItemView).setTextColor(Color.BLACK);
        }
    }
      private TextView _selectedItemView;
      mySpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                   _selectedItemView= (TextView) parent.getItemAtPosition(pos);
                   _selectedItemView.setTextColor(Color.BLACK);
                }

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

                }
            });