为了账号安全,请及时绑定邮箱和手机立即绑定

activity向fragment传递bundle对象时getString方法有空指针异常

activity向fragment传递bundle对象时getString方法有空指针异常

蜡笔小新的Qe 2018-05-05 22:05:25
这是一个我觉得很奇怪的事情,我想把一个由activity传过来的HashMap的内容放到listView中private ListView mListView=null;//listView private SimpleAdapter sim_adapter;//简单适配器 private List<Map<String,Object>>dateList;//数据源 HashMap<String,String> freList=null; public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {     View view=inflater.inflate(R.layout.fragment_fre_list,null);     mListView=(ListView) view.findViewById(R.id.listView);     Bundle bundle=getArguments();//可以很确定这个bundle一定是接收到了的,可奇怪就奇怪在这个地方     SerMap serializableMap = (SerMap) bundle.get("freList");     //定义SerMap方法(这是我自己写的一个方法可以吧HashMap serializable化)     freList=serializableMap.getMap();     dateList=new ArrayList<Map<String, Object>>();     dateList=getData();     sim_adapter=new SimpleAdapter(getActivity(),dateList,R.layout.item,new String[]{"friend","newCount"},new int[]{R.id.friend,R.id.newCount});     mListView.setAdapter(sim_adapter);     return view; }这是定义数据源的getData方法private List<Map<String,Object>> getData(){     int k=freList.size();//得到map的长度     Object[] keys =  freList.keySet().toArray();     Object[] values =  freList.values().toArray();//键和值都分别转换为数组   /*  for (i=0;i<k;i++){         System.out.println("--------"+i+"---------");         System.out.println("--------"+keys[i]+"---------");         System.out.println("--------"+values[i]+"---------");     }*/ // 这是一个注释掉的代码 这里也有一个奇怪的地方--->如果把接下来的for循环注释掉这个循环可以正常输出     而如果把这段注释掉运行接下来的循环就会报数组越界的异常。     for(int i=0;i<k;i++){         Map<String,Object>map=new HashMap<String, Object>();         map.put("friend",keys[i]);         map.put("newCount",values[i]);         dateList.add(map);     }     return dateList; }然后最主要的奇怪的地方是这里(这段代码如果这么写的话):public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {     View view=inflater.inflate(R.layout.fragment_fre_list,null);     mListView=(ListView) view.findViewById(R.id.listView);     Bundle bundle=getArguments();//可以很确定这个bundle一定是接收到了的,可奇怪就奇怪在这个地方     if(bundle!=null){//把上边的那段代码放在这个if语句中     SerMap serializableMap = (SerMap) bundle.get("freList");     freList=serializableMap.getMap();     dateList=new ArrayList<Map<String, Object>>();     dateList=getData();     sim_adapter=new SimpleAdapter(getActivity(),dateList,R.layout.item,new String[]{"friend","newCount"},new int[]{R.id.friend,R.id.newCount});     mListView.setAdapter(sim_adapter);     }     return view; }如果这么写,程序会正常运行也不会报getString方法空指针的错误,可是listView就不会在UI界面显示。可如果像第一种那样写,就会报getString空指针异常.各路大神能否拯救一下我这个萌新?在做一个手机QQ的项目.快到期了,可是被这个问题困扰好几天了.大家能否帮帮我~~感激不尽 
查看完整描述

目前暂无任何回答

  • 0 回答
  • 0 关注
  • 1491 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信