2013-08-27 52 views
0

我在一个片段执行expandablelistview,我创建该集合的groupcollection和组列表,面对NullPointerException异常,不知道在哪里我做错安卓:当片段使用expandablelistview

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
      View view = inflater.inflate(R.layout.first_tab_layout, null); 


     createGroupList(); 

     createCollection(); 

     expListView = (ExpandableListView) getActivity().findViewById(R.id.laptop_list); 
     final ExpandableListAdapter expListAdapter = new ExpandableListAdapter(
       getActivity(), groupList, laptopCollection); 
     expListView.setAdapter(expListAdapter); 

     expListView.setOnChildClickListener(new OnChildClickListener() { 

      public boolean onChildClick(ExpandableListView parent, View v, 
        int groupPosition, int childPosition, long id) { 
       final String selected = (String) expListAdapter.getChild(
         groupPosition, childPosition); 
       Toast.makeText(getActivity(), selected, Toast.LENGTH_LONG) 
         .show(); 

       return true; 
      } 
     }); 

     return view; 

    } 

    private void createCollection() { 
     groupList = new ArrayList<String>(); 
     groupList.add("HP"); 
     groupList.add("Dell"); 
     groupList.add("Lenovo"); 
     groupList.add("Sony"); 
     groupList.add("HCL"); 
     groupList.add("Samsung"); 

    } 

    private void createGroupList() { 
     // preparing laptops collection(child) 
     String[] hpModels = { "HP Pavilion G6-2014TX", "ProBook HP 4540", 
       "HP Envy 4-1025TX" }; 
     String[] hclModels = { "HCL S2101", "HCL L2102", "HCL V2002" }; 
     String[] lenovoModels = { "IdeaPad Z Series", "Essential G Series", 
       "ThinkPad X Series", "Ideapad Z Series" }; 
     String[] sonyModels = { "VAIO E Series", "VAIO Z Series", 
       "VAIO S Series", "VAIO YB Series" }; 
     String[] dellModels = { "Inspiron", "Vostro", "XPS" }; 
     String[] samsungModels = { "NP Series", "Series 5", "SF Series" }; 

     laptopCollection = new LinkedHashMap<String, List<String>>(); 

     for (String laptop : groupList) { 
      if (laptop.equals("HP")) { 
       loadChild(hpModels); 
      } else if (laptop.equals("Dell")) 
       loadChild(dellModels); 
      else if (laptop.equals("Sony")) 
       loadChild(sonyModels); 
      else if (laptop.equals("HCL")) 
       loadChild(hclModels); 
      else if (laptop.equals("Samsung")) 
       loadChild(samsungModels); 
      else 
       loadChild(lenovoModels); 

      laptopCollection.put(laptop, childList); 
     } 
    } 

    private void loadChild(String[] laptopModels) { 
     childList = new ArrayList<String>(); 
      for (String model : laptopModels) 
       childList.add(model); 
    } 

获取异常NullPointerException异常在管线104:这是for (String laptop : groupList) {

下面

是我的跟踪

08-27 12:35:28.732: E/AndroidRuntime(22658): at com.me.myapp.SecondFragment.createGroupList(SecondFragment.java:104) 
08-27 12:35:28.732: E/AndroidRuntime(22658): at com.me.myapp.SecondFragment.onCreateView(SecondFragment.java:53) 
08-27 12:35:28.732: E/AndroidRuntime(22658): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870) 
08-27 12:35:28.732: E/AndroidRuntime(22658): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
08-27 12:35:28.732: E/AndroidRuntime(22658): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622) 

回答

1

这是因为你是您的ID集之前调用函数ExpandableListView 所以你必须在你的函数调用之前找到它。

,改变

expListView = (ExpandableListView) getActivity().findViewById(R.id.laptop_list); 

expListView = (ExpandableListView) view.findViewById(R.id.laptop_list); 
1

你想叫扩张这是不是在这里的主要活动存在列表

expListView = (ExpandableListView) getActivity().findViewById(R.id.laptop_list); 

,而不是你需要从正确的观点称之为试试这个

expListView = (ExpandableListView) view.findViewById(R.id.laptop_list);