我一直试图通过我的主要 Activity 设置 ImageView ,但它一直在 LogCat 中返回空指针异常。我的代码是不言自明的。
我正在从 JSON url 中提取数据并从对象中提取数据。
for (int i=0; i<forecastday_arr.length(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = forecastday_arr.getJSONObject(i);
JSONObject date_obj = e.getJSONObject("date");
String curDate = date_obj.getString("weekday");
String conditions = e.getString("conditions");
String icon_to_use = e.getString("icon");
map.put("weekday", curDate);
map.put("conditions", conditions);
map.put("icon", icon_to_use);
if (icon_to_use=="rain") {
ImageView imgView = (ImageView) findViewById(R.id.imageViewDayOne);
imgView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.rain));
}
mylist.add(map);
}
在我的代码中,我正在检查“图标”中的值是否等于雨(今天),如果是,则返回存储在我的可绘制文件夹中的雨图标。即使没有 if 语句,我也会得到相同的空指针异常。我是 Android 的新手,所以现在调试并不是最简单的事情。
我想我设置的图像是正确的。我在下面附上了我的 LogCat 的图片。
抱歉这么含糊,但我认为设置图像真的很简单。如果我也遗漏了什么,我很抱歉 - 如果有,我会尽快更正。
我的 MainActivity.java 的 Pastebin:http://pastebin.com/uNfYDGAw和我的 activity_main.xml 的 pastebin:http://pastebin.com/M1xy1buB
最佳答案
看来你的 NullPointerException
来自这一行:
imgView.setImageBitmap(BitmapFactory.decodeResource(this.getResources(), R.drawable.rain));
我怀疑 this.getResources()
或更有可能 BitmapFactory.decodeResource
正在返回 null
。
幸运的是,有一种更简单的方法可以在 ImageView
上设置图像。您可以使用 setImageResource
在运行时设置可绘制资源,如下所示:
imgView.setImageResource(R.drawable.rain);
--编辑--
您还需要确保调用 setContentView
时使用的布局包含您尝试在 onCreate
中使用的 ImageView
MainActivity
,之前尝试使用 findViewById
引用任何 View
。
setContentView(R.layout.layoutContainingImageViewDayOne);
最后,如果您尝试执行任何网络请求,则应在后台线程(离开 UI 线程)或出现“应用程序无响应”崩溃的应用程序中完成。 AsyncTask
对此很有用(但是还有其他方法)。参见 http://developer.android.com/training/basics/network-ops/connecting.html了解更多信息。
--编辑 2--
现在您发布了所有代码,我发现这里存在一些重大缺陷。您的 R.layout.activity_main
实际上应该重命名为 R.layout.list_row
因为它包含您的行元素。现在您正在尝试为您的 Activity
及其 ListAdapter
使用相同的布局 (R.layout.activity_main
),这是不可能的。 R.layout.activity_main
需要有一个 ListView
,您将 ListAdapter
附加到其中。您还尝试在列表行的 Activity
代码中设置 ImageView
,ListAdapter
已经为您完成了。
所以我建议您看一些示例并重构您的应用程序,Vogella 有一些很棒的教程 - http://www.vogella.com/articles/AndroidListView/article.html .
关于android - 通过 Activity 设置 imageview src,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441210/