標籤:android style blog http color io os ar java
============問題描述============
android null 指標搞了二天了,還是沒找到錯誤,知道那裡報null 指標但不知道怎麼改
有空的哥們幫幫忙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"));//擷取傳過來的分類IdcategoryId = 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();}@Overrideprotected 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); //這行報錯 null 指標// 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() {@Overridepublic 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 的控制項
Androidnull 指標的問題。。