これは私の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 code:
@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);
whoamiwith.setImageResource(R.drawable.loginbtn);
ImageView whoamiwith = (ImageView)findViewById(R.id.whoamiwith)
Drawable new_image= getResources().getDrawable(R.drawable.loginbtn);
whoamiwith.setBackgroundDrawable(new_image);
ちょうど試して
ImageView whoamiwith = (ImageView)findViewById(R.id.whoamiwith)
whoamiwith.setImageResource(R.id.new_image);
画像ビューの初期化:
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));
}
例外はwhoamiwith
がnullです。 ImageView whoamiwith =(ImageView)findViewById(R.id.whoamiwith)のようにwhoamiwith
を初期化しましたか
ImageView whoamiwith = (ImageView)findViewById(R.id.whoamiwith);
whoamiwith.setImageResource(R.drawable.image_i_wanna_put);