在Android Studio中使用Spinner添加图像

时间:2015-06-13 22:11:35

标签: java android

我尝试根据选定的Spinner元素在MainActivity中加载图片。

因此,如果我的微调器在布局中包含两个通道名称,并且这些名称存储在数组通道中= [" skysports"," premierlive"]

我已经定义了我的ImageView:

user_id | phrase_id |  rating
_________________________________________
a       | 1         | bad
a       | 2         | good
a       | 3         | bad
b       | 1         | good
b       | 2         | bad
b       | 3         | bad

创建Spinner时,我使用此频道数组,然后从那里调用

ImageView logo = (ImageView) findViewById(R.id.logo);

其中channels [i]是当前选择的Spinner元素。

最后,我试图用getLogo中的switch-case实现这个图像开关:

getLogo(channels[i]); 

这一切都给了我

  

java.lang.NullPointerException:尝试调用虚方法' void   android.widget.ImageView.setImageResource(INT)'在null对象上   参考

我该怎么办? TNX

编辑:

activity_main:

public void getLogo(String channel){
        switch(channel){
            case ("skysports"):
                logo.setImageResource(R.drawable.skysports);
                break;
            case ("premierlive"):
                logo.setImageResource(R.drawable.premierlive);
                break;
        }
    }

和MainActivity:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
        android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">

     <Spinner
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/spinnerMain"
            android:paddingLeft="30dp"
            android:paddingRight="10dp"
            android:paddingTop="2dp"
            android:paddingBottom="2dp"
            android:clickable="true"
            android:touchscreenBlocksFocus="true"
            android:layout_alignParentTop="true"
            android:visibility="visible"
            android:textSize="@android:dimen/app_icon_size"
            android:layout_centerVertical="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/logo"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="20dp" />

</RelativeLayout>

}

1 个答案:

答案 0 :(得分:1)

我在您的活动中提供私有字段徽标,并在onCreate方法中提供一个名为logo的局部变量,该变量是初始化的变量。在onCreate方法中,您需要初始化要在类的其他方法中使用的私有字段,而不是

ImageView logo = (ImageView) ...

你应该

logo = (ImaView) ...