当前位置:编程学习 > wap >>

关于android4.0以上版本连接webseivice时。报空指针获取不到数据问题。大家都有什么心得,或者大家都是怎么处理的?

我试过两种方式。
1.在   super.onCreate(savedInstanceState);前加入。
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()       
      .detectDiskReads()       
      .detectDiskWrites()       
      .detectNetwork()   // or .detectAll() for all detectable problems       
      .penaltyLog()       
      .build());       
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()       
      .detectLeakedSqlLiteObjects()    
      .penaltyLog()       
      .penaltyDeath()       
      .build()); 
 第二种,新建线程用handler接受线程得到的值。这两种方法在写好吗查询时都行的通。
但是当我写查询天气的时候,就报错了,。。百思不得我解。

多线程 指针 Android 4.0 webseivce --------------------编程问答-------------------- 贴上一部分代码:
 /** 选择城市框 **/
     private void Show_chooseCityDialog(int CityID) {
          switch (CityID) {
               case CITY:

                    // 取得city_layout.xml...中的图片
                    final View view = LayoutInflater.from(this).inflate(R.layout.city_layout, null);

                    provinces_spinner = (Spinner) view.findViewById(R.id.province_spinner);
                    citys_spinner = (Spinner) view.findViewById(R.id.city_spinner);


                    // 获取省份。。。
                    
                    try {
                         provinces = GetweatherMessage.getProvinceList();          
                         ArrayAdapter adapter =
                                   new ArrayAdapter(this, android.R.layout.simple_spinner_item,
                                             provinces);
                         adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                         provinces_spinner.setAdapter(adapter);
                    } catch (Exception e) {
                         // TODO Auto-generated catch block
                         Toast.makeText(getApplicationContext(), "您的网络连接错误", Toast.LENGTH_SHORT)
                                   .show();
                    }  

                    // 省份Splnner监听器
                    provinces_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {


                         public void onItemSelected(AdapterView<?> parent, View view, int position,
                                   long id) {
                              try {
                                   citysname = GetweatherMessage.getCityListByProvince(provinces.get(position));
                                   ArrayAdapter adapter2 =
                                             new ArrayAdapter(Menu_mainActivity.this,
                                                       android.R.layout.simple_spinner_item, citysname);
                                   adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                                   citys_spinner.setAdapter(adapter2);
                              } catch (Exception e) {
                                   Toast.makeText(getApplicationContext(), "您的网络连接错误", Toast.LENGTH_SHORT)
                                   .show();
                              }
                         
                         }
                         public void onNothingSelected(AdapterView<?> parent) {
                              // TODO Auto-generated method stub

                         }

                    });
                    // 监听城市的Sqinner
                    citys_spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

                         @Override
                         public void onItemSelected(AdapterView<?> parent, View view, int position,
                                   long id) {

                              mylocation = citysname.get(position);


                         }

                         @Override
                         public void onNothingSelected(AdapterView<?> parent) {
                              // TODO Auto-generated method stub


                         }
                    });
                    /** 显示城市选择对话框。。。 */
                    AlertDialog.Builder chooserdialog = new AlertDialog.Builder(this);
                    chooserdialog.setTitle("请选择城市");
                    chooserdialog.setView(view);
                    chooserdialog.setIcon(android.R.drawable.ic_menu_info_details);
                    chooserdialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {


                         public void onClick(DialogInterface dialog, int which) {
                              location.setText(mylocation);
                              refresh(mylocation);

                         }


                    });
                    chooserdialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                         public void onClick(DialogInterface dialog, int which) {


                         }
                    });
                    chooserdialog.show();
                    break;

          }

     }
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,