我正在尝试对HashMap
使用if语句,但是当我尝试在设备上运行它时会崩溃。
这是我的代码
ImageView promoIcon = (ImageView) findViewById(R.id.icon_promo);
DatabaseHandler db = new DatabaseHandler(this);
List <AllItem> allItems = new ArrayList<AllItem>();
allItems = db.getAllAccommodations();
for(AllItem cn : allItems) {
String promotion = cn.getPromotion();
if (promotion.equals("1"))
{
promoIcon.setVisibility(View.VISIBLE);
}
HashMap<String, String> all_Items = new HashMap<String, String>();
all_Items.put(TAG_PROMOTION,promotion);
accommodationlist.add(all_Items);
}
这是我的logcat
09-09 15:13:37.364: E/AndroidRuntime(18292): FATAL EXCEPTION: main
09-09 15:13:37.364: E/AndroidRuntime(18292): Process: com.indomultimedia.hellobali, PID: 18292
09-09 15:13:37.364: E/AndroidRuntime(18292): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.indomultimedia.hellobali/com.indomultimedia.hellobali.Accommodation}: java.lang.NullPointerException
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2292)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2350)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.ActivityThread.access$800(ActivityThread.java:163)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1257)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.os.Handler.dispatchMessage(Handler.java:102)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.os.Looper.loop(Looper.java:157)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.ActivityThread.main(ActivityThread.java:5335)
09-09 15:13:37.364: E/AndroidRuntime(18292): at java.lang.reflect.Method.invokeNative(Native Method)
09-09 15:13:37.364: E/AndroidRuntime(18292): at java.lang.reflect.Method.invoke(Method.java:515)
09-09 15:13:37.364: E/AndroidRuntime(18292): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
09-09 15:13:37.364: E/AndroidRuntime(18292): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
09-09 15:13:37.364: E/AndroidRuntime(18292): at dalvik.system.NativeStart.main(Native Method)
09-09 15:13:37.364: E/AndroidRuntime(18292): Caused by: java.lang.NullPointerException
09-09 15:13:37.364: E/AndroidRuntime(18292): at com.indomultimedia.hellobali.Accommodation.onCreate(Accommodation.java:296)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.Activity.performCreate(Activity.java:5389)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
09-09 15:13:37.364: E/AndroidRuntime(18292): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2256)
09-09 15:13:37.364: E/AndroidRuntime(18292): ... 11 more
我真的不知道为什么会有错误。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
根据您对该问题的评论,以下行返回null
:
ImageView promoIcon = (ImageView) findViewById(R.id.icon_promo);
这意味着findViewById
找不到您要查找的视图,因此尝试访问此行中的对象
promoIcon.setVisibility(View.VISIBLE);
失败,因为promoIcon == null
并且您无法调用null
上的任何方法。这正是异常消息所说的:您尝试使用的一个对象变量未初始化。你的工作是通过调试找出哪一个: - )