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 的控件

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。