ImageView.setImageDrawable(android.graphics.drawable.Drawable)' 在空对象引用上



我在logcr中说";引起原因:java.lang.NullPointerException:试图在null对象引用上调用虚拟方法"void android.widget.ImageView.setImageDrawable(android.graphics.drawable.drawable(";以及";在com.example.checkdisease.checkdisease.onCreate(checkdisease.java:41(";我不知道该怎么修。有人能帮我吗?

TextView tv_head;
TextView info[] =new TextView[2];
CardView content;
ImageView img[] = new ImageView[7];

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
content = findViewById(R.id.cv_disease);
img[0] = findViewById(R.id.content_disease1);
img[1] =findViewById(R.id.content_disease2);
info[0] = findViewById(R.id.info1);
info[1] = findViewById(R.id.info2);
tv_head = findViewById(R.id.tv_head);
int max =getIntent().getIntExtra("max", 0);
int[] c =getIntent().getIntArrayExtra("c");
int i= 0;
if (max == c[0]) {
img[i].setImageDrawable(getResources().getDrawable(R.drawable.d1));
info[i].setVisibility(View.VISIBLE);
info[i].setMovementMethod(LinkMovementMethod.getInstance());
info[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse("https://www.google.com/search?q=diarrhoea&oq=diarrhoea&aqs=chrome..69i57.6104j0j1&sourceid=chrome&ie=UTF-8"));
startActivity(browserIntent);
}
});
i++;
}
if (max == c[1]) {
img[i].setImageDrawable(getResources().getDrawable(R.drawable.d2));
info[i].setVisibility(View.VISIBLE);
info[i].setMovementMethod(LinkMovementMethod.getInstance());
info[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse("https://www.google.com/search?ei=xOeZXb3KCIX6z7sPzomcsAg&q=malaria&oq=malaria&gs_l=psy-ab.3..0i67l6j0l4.40811.43654..45013...0.2..3.187.1852.0j12......0....1..gws-wiz.....6..0i71j0i362i308i154i357j0i131.J8tK4aVih7Y&ved=0ahUKEwi9vOLF2oflAhUF_XMBHc4EB4YQ4dUDCAs&uact=5"));
startActivity(browserIntent);
}
});
i++;
}
if (max == c[2]) {
img[i].setImageDrawable(getResources().getDrawable(R.drawable.d3));
info[i].setVisibility(View.VISIBLE);
info[i].setMovementMethod(LinkMovementMethod.getInstance());
info[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse("https://www.google.com/search?ei=8ueZXf3XGcOzmge416SoBw&q=typhoid&oq=typhoid&gs_l=psy-ab.3..0i67l4j0j0i67l2j0l3.17165.19407..19806...0.2..3.188.1796.0j12......0....1..gws-wiz.....6..0i71j0i362i308i154i357j0i131i67.gApJs810Cpo&ved=0ahUKEwj9mOvb2oflAhXDmeYKHbgrCXUQ4dUDCAs&uact=5"));
startActivity(browserIntent);
}
});
i++;
}
if (max == c[3]) {
img[i].setImageDrawable(getResources().getDrawable(R.drawable.d4));
info[i].setVisibility(View.VISIBLE);
info[i].setMovementMethod(LinkMovementMethod.getInstance());
info[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse("https://www.google.com/search?ei=B-iZXbSsB9PUz7sPnM6iUA&q=diabetes&oq=diabetes&gs_l=psy-ab.3..0i67l3j0j0i67j0l5.20518.23074..23777...0.2..3.199.1955.0j13......0....1..gws-wiz.....6..0i71j0i362i308i154i357j0i131j0i10i67.xxtksmH4CzM&ved=0ahUKEwj0y9rl2oflAhVT6nMBHRynCAoQ4dUDCAs&uact=5"));
startActivity(browserIntent);
}
});
i++;
}
if (max == c[4]) {
img[i].setImageDrawable(getResources().getDrawable(R.drawable.d5));
info[i].setVisibility(View.VISIBLE);
info[i].setMovementMethod(LinkMovementMethod.getInstance());
info[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse("https://www.google.com/search?biw=1536&bih=754&ei=z-iZXdi1GJOf9QPDubbICg&q=blood+pressure+precautions&oq=blood+pressure+precautions&gs_l=psy-ab.3..0i67j0l2j0i22i30l7.4084.4084..4335...0.1..0.157.157.0j1....1..0....1..gws-wiz.......0i71.XK6RSKLBd1o&ved=0ahUKEwiY2ZrF24flAhWTT30KHcOcDakQ4dUDCAs&uact=5"));
startActivity(browserIntent);
}
});
i++;
}
if (max == c[5]) {
img[i].setImageDrawable(getResources().getDrawable(R.drawable.d6));
info[i].setVisibility(View.VISIBLE);
info[i].setMovementMethod(LinkMovementMethod.getInstance());
info[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW);
browserIntent.setData(Uri.parse("https://www.google.com/search?ei=juiZXaKeF4ne9QPZm6voDQ&q=heart+disease&oq=heart+diseas&gs_l=psy-ab.3.0.0l10.21631.27511..29715...3.1..0.187.2294.0j15......0....1..gws-wiz.......0i71j0i67j0i273j0i131j0i10j0i131i273.F4U-kXSmLO8"));
startActivity(browserIntent);
}
});
i++;
}


}

}

"max"的确切值是多少?

这里您只初始化了2个ImageViewimg[0]和img[1]

如果max的值是3到7,它将导致异常(java.lang.NullPointerException(

因为img[2]、img[3]、img[4]、img[5]、img[6]、img[7]未初始化。

希望你能理解。。。

在这里,您已经为索引数组0和2初始化了img数组,类似

img[0] = findViewById(R.id.content_disease1);
img[1] =findViewById(R.id.content_disease2);

但是,如果您的if条件if (max == c[0])匹配超过2次,则i将大于3。由于没有img[3]或更高版本的索引初始化,因此在尝试为这些图像视图设置图像时会出现空指针异常。

相关内容

最新更新