47

これは私の xml です。これは私のアクティビティに表示されるフラグメント内にあります。

<FrameLayout
                    android:id="@+id/frame1"
                    android:layout_width="wrap_content"
                    android:layout_height="115dp"
                    android:layout_margin="2dp"
                    android:layout_weight="0.33">

                    <ImageView
                        android:id="@+id/whoamiwith"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:scaleType="fitCenter"
                        android:src="@drawable/default_image" />
                </FrameLayout>

そして、これは私のJavaコードです:

@Override
public void onClick(View click) {
    if (click == profileBtn) {
        whoamiwith.setBackgroundResource(R.drawable.image_i_wanna_put);
    }
}

画像ビューの画像ソースを変更しようとしています。構文エラーはありませんが、ボタンをクリックすると、エミュレーターは強制終了し、logcat には次のように表示されます。

java.lang.NullPointerException

それは次の行を指しています:

whoamiwith.setBackgroundResource(R.drawable.loginbtn);
4

6 に答える 6

105
whoamiwith.setImageResource(R.drawable.loginbtn);
于 2013-10-23T07:50:09.417 に答える
12
 ImageView whoamiwith = (ImageView)findViewById(R.id.whoamiwith)  
 Drawable new_image= getResources().getDrawable(R.drawable.loginbtn);   
    whoamiwith.setBackgroundDrawable(new_image);
于 2013-10-23T08:33:37.980 に答える
3
ImageView whoamiwith = (ImageView)findViewById(R.id.whoamiwith);
whoamiwith.setImageResource(R.drawable.image_i_wanna_put);
于 2013-10-23T08:40:07.563 に答える
3

画像ビューを初期化します:

whoamiwith = findViewByid(R.id.whoamiwith);

次に、Click メソッドで、次の行を記述して画像リソースを変更します。

 if(android.os.Build.VERSION.SDK_INT > 15)
    {
        // for API above 15
        whoamiwith.setBackground(getResources().getDrawable(R.drawable.loginbtn));
    }
    else
    {
        // for API below 15
        whoamiwith.setBackgroundDrawable(getResources().getDrawable(R.drawable.loginbtn));
    }
于 2013-10-23T08:19:34.550 に答える
2

例外はwhoamiwithnull です。whoamiwithImageView whoamiwith = (ImageView)findViewById(R.id.whoamiwith) のように初期化しましたか

setImageDrawable を動的に使用して ImageView に画像を設定する方法を参照してください。

于 2013-10-23T08:26:06.380 に答える