2017-07-04 28 views
1

にレストランアプリのシミュレータを実行するときにnullポインタ例外を取得:日食にレストランアプリを実行しようとしたとき、私は次のエラーを取得してい日食

java.lang.NullPointerExceptionが がcom.myrestaurant.appで.ui.MainMenuForm.lambda $ 0(MainMenuForm.java:73) at com.codename1.ui.util.EventDispatcher.fireSelectionSync(EventDispatcher.java:321) at com.codename1.ui.util.EventDispatcher.fireSelectionEvent(EventDispatcher。 java:402) at com.codename1.ui.list.DefaultListModel.setSelectedIndex(DefaultListModel.java:181) at com.codename1.ui.List.initComponentImpl(List.java:329) at com.co (Container.java:715) (com.codename1.ui.Container.insertComponentAt(Container.java:687))でdename1.ui.Container.initComponentImpl(Container.java:979) をcom.codename1.ui.Container.insertComponentAtImpl at com.codename1.ui.Container.addComponent(Container.java:641) at com.codename1.ui.Form.addComponent(Form.java:1207) at com.codename1.ui.Container.add(コンテナ。 java:281) at com.myrestaurant.app.ui.BaseForm.init(BaseForm.java:102) at com.myrestaurant.app.ui.BaseForm(BaseForm.java:34) at com.myrestaurant.app .ui.MainMenuForm。(MainMenuForm.java:43) at com.myrestaurant.app.ui.BaseForm.showMainMenuForm(BaseForm.java:156) at com.myrestaurant.app.MyRestaurant.start(MyResta urant.java:48)sun.reflect.DelegatingMethodAccessorImpl.invokeでsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) でsun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブメソッド) で(DelegatingMethodAccessorImpl.java:43 ) at java.lang.reflect.Mavod.invoke(Method.java:498) com.codename1.impl.javase.Executor $ 1 $ 1.run(Executor.java:123) at com.codename1.ui.Display .processSerialCalls(Display.java:1154) at com.codename1.ui.Display.mainEDTLoop(Display.java:971) at com.codename1.ui.RunnableWrapper.run(RunnableWrapper.java:120) at com.codename1 .impl.CodenameOneThread.run(CodenameOneThread.java:176)

助けてください?

方法は以下の通りです:

@Override 
protected List<String> createCategoryList() { 
    if(Restaurant.getInstance(). 
       menu.get(). 
       categories.size() == 0) { 
     categoryModel = new DefaultListModel<>("Loading..."); 
    } else { 
     categoryModel = new DefaultListModel<>(
       Restaurant.getInstance(). 
        menu.get(). 
        categories.asList()); 
    } 
    List<String> l = new List<String>(categoryModel) { 
     @Override 
     protected boolean shouldRenderSelection() { 
      return true; 
     } 
    }; 
    ((DefaultListCellRenderer<String>)l.getRenderer()).setAlwaysRenderSelection(true); 
    l.setIgnoreFocusComponentWhenUnfocused(false); 
    l.setOrientation(List.HORIZONTAL); 
    l.setFixedSelection(List.FIXED_CENTER); 
    l.addSelectionListener((i, ii) -> { 
     if(currentCategory != l.getSelectedItem()) { 
      currentCategory = l.getSelectedItem(); 
      for(Component c : dishesContainer) { 
       Dish d = (Dish)c.getClientProperty("dish"); 
       ***boolean hidden = d.category.get().equals(currentCategory);*** 
       c.setHidden(hidden); 
       c.setVisible(!hidden); 
      } 
      dishesContainer.animateLayout(150); 
     } 
    }); 
    return l; 
} 
+0

これは、MainMenuForm.java:73のNullPointerExceptionです。私たちはアプリを持っていないので、私たちはあなたを助けることはできません。問題のコードを提供してください。 –

+0

申し訳ありませんがコードを追加することを忘れてしまった。私はメソッドを追加しました。ありがとうございました –

答えて

0

これは、コースが進行するにつれてアプリケーションの後の反復で修正されました。これはこのブロックの現在のコードです:

for(Component c : dishesContainer) { 
    Dish d = (Dish)c.getClientProperty("dish"); 
    if(d != null) { 
     String cat = d.category.get(); 
     if(cat != null) { 
      boolean hidden = cat.equals(currentCategory); 
      c.setHidden(hidden); 
      c.setVisible(!hidden); 
     } 
    } 
} 

この時点では、私はすべてのアップロードを完了していませんが、私はそれに取り組んでいます。

+0

ありがとうございます。これでエラーが修正されました。 –

1

は は、この変数のいずれかがnullであるようだ...リストリスナーに "***" の文字を削除します。

  • currentCategory
  • 料理容器
  • d
  • d.category
関連する問題