Android空指针的问题。。
============问题描述============
android 空指针搞了二天了,还是没找到错误,知道那里报空指针但不知道怎么改
有空的哥们帮帮忙qq517835354
报错代码:
GastronomyList.class:
/** * 一切为了测试 */ private ExpandTabView expandTabView; private ArrayList<View> mViewArray = new ArrayList<View>(); private ViewMiddle viewMiddle; private void init(){ tv_menu1 = (TextView)findViewById(R.id.tv_menu1); tv_menu2 = (TextView)findViewById(R.id.tv_menu2); tv_menu2.setVisibility(View.GONE); tv_menu3 = (TextView)findViewById(R.id.tv_menu3); tv_menu1.setText(getIntent().getStringExtra("menu")); //获取传过来的分类Id categoryId = getIntent().getStringExtra("id"); tv_menu1.setOnClickListener(this); //tv_menu2.setOnClickListener(this); tv_menu3.setOnClickListener(this); View view = LayoutInflater.from(context).inflate(R.layout.bottom_bar, null); lv_list = (ListView)findViewById(R.id.lv_list_ms); list_list = new ArrayList<HashMap<String,String>>(); list_data3 = new ArrayList<HashMap<String,String>>(); for(int i=0;i<orderNames.length;i++){ HashMap<String,String> map = new HashMap<String, String>(); map.put("name", orderNames[i]); map.put("dictate", orderDictates[i]); list_data3.add(map); } width = getWindowManager().getDefaultDisplay().getWidth(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_gastronomy_list); init(); initView(); initVaule(); initListener(); //getProductCategoryList(categoryId); getFLLsit(); getDictList(); getProductList(categoryId,busiareaId,order,pageNo*BASE,(pageNo+1)*BASE); } /** * 一切为了测试 * @param 唉 命苦 */ private void initView() { expandTabView = (ExpandTabView) findViewById(R.id.expandtab_view); // viewLeft = new ViewLeft(this); // getProductCategoryList(""); viewMiddle = new ViewMiddle(this); // viewRight = new ViewRight(this); } private void initVaule() { // mViewArray.add(viewLeft); mViewArray.add(viewMiddle); // mViewArray.add(viewRight); ArrayList<String> mTextArray = new ArrayList<String>(); // mTextArray.add("距离"); mTextArray.add("美食"); if(mViewArray!=null){ Log.i("什么玩意", ""+mViewArray.size()); }else{ Log.i("什么玩意", "呵呵"); } // mTextArray.add("距离"); expandTabView.setValue(mTextArray, mViewArray); //这行报错 空指针 // expandTabView.setTitle(viewLeft.getShowText(), 0); // expandTabView.setTitle(viewMiddle.getShowText(), 1); // expandTabView.setTitle(viewRight.getShowText(), 2); } private void initListener() { // viewLeft.setOnSelectListener(new ViewLeft.OnSelectListener() { // // @Override // public void getValue(String distance, String showText) { // onRefresh(viewLeft, showText); // } // }); viewMiddle.setOnSelectListener(new ViewMiddle.OnSelectListener() { @Override public void getValue(String showText) { onRefresh(viewMiddle, showText); } }); // viewRight.setOnSelectListener(new ViewRight.OnSelectListener() { // @Override // public void getValue(String distance, String showText) { // onRefresh(viewRight, showText); // } // }); } private void onRefresh(View view, String showText) { expandTabView.onPressBack(); int position = getPositon(view); if (position >= 0 && !expandTabView.getTitle(position).equals(showText)) { expandTabView.setTitle(showText, position); } Toast.makeText(getApplicationContext(), showText, Toast.LENGTH_SHORT).show(); } private int getPositon(View tView) { for (int i = 0; i < mViewArray.size(); i++) { if (mViewArray.get(i) == tView) { return i; } } return -1; }
报错信息:
============解决方案1============
你检查一下activity_gastronomy_list.xml里有没有对应的id为expandtab_view的控件。
============解决方案2============
2楼说的不错,因为 android 目前的机制是在 findViewById 找不到对应的控件的时候,会返回 null, 而不是抛出异常,而 Null 可以被强制类型转换为任意类型.
因此,你需要检查布局文件中是否有对应id 的控件
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。