BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #5464同步于 2012/2/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

木招了,求助论坛。~~

conghaolin
2012/2/29镜像同步22 回复
如图。一个android application,从同学的机子上就可以运行,到我的电脑上就不行。 JDK,eclipse和sdk都已经重装过一边了。。还是不行。。。求高人解决~~~~
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
bixiaopeng机器人#1 · 2012/2/29
第46行看看有没有什么问题。目测空引用。。。
bixiaopeng机器人#2 · 2012/2/29
可能那一行有个API在你同学那返回值不为空。
conghaolin机器人#3 · 2012/2/29
【 在 bixiaopeng 的大作中提到: 】 : 可能那一行有个API在你同学那返回值不为空。 同样的代码在不同的电脑上运行结果会不同?额。。。。。。。。 我这是整个把一个project拷过来的,而且eclipse没有error或者warnning。 就是run congfiguration的时候会forced stop.
bixiaopeng机器人#4 · 2012/2/29
有可能。。。你把那几行的代码贴看看
ep3345机器人#5 · 2012/2/29
有可能是你虚拟机的API级别跟你同学的不一样。。。。。。。你俩都是同样的安卓版本吗?
conghaolin机器人#6 · 2012/2/29
【 在 bixiaopeng 的大作中提到: 】 : 有可能。。。你把那几行的代码贴看看 就是书上的一个例子,直接从书上提供的网站下载的,加了三个button。我直接运行例子也不通过,所以应该不是我加的这3个button的事。 谢谢啦 public class Activity01 extends MapActivity { public MapController mapController; public MyLocationOverlay myPosition; public MapView myMapView; private static final int ZOOM_IN=Menu.FIRST; private static final int ZOOM_OUT=Menu.FIRST+1; Button start,stop,mute; TextView textview; MediaPlayer myplayer; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //========================================================= start=(Button)findViewById(R.id.start); start.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ } }); //======================================================= stop=(Button)findViewById(R.id.stop); stop.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ } }); //========================================================= mute=(Button)findViewById(R.id.silent); mute.setOnClickListener(new Button.OnClickListener(){ public void onClick(View v){ } }); //=========================================================== setContentView(R.layout.main); //取得LocationManager实例 LocationManager locationManager; String context=Context.LOCATION_SERVICE; locationManager=(LocationManager)getSystemService(context); myMapView=(MapView)findViewById(R.id.MapView01); //取得MapController实例,控制地图 mapController=myMapView.getController(); //设置显示模式 myMapView.setSatellite(true); //myMapView.setStreetView(true); myMapView.setTraffic(true); //设置地图支持点击 myMapView.setClickable(true); //设置缩放控制,这里我们自己实现缩放菜单(缩放尺度为1到21) myMapView.displayZoomControls(false); //设置使用MyLocationOverlay来绘图 mapController.setZoom(17); myPosition=new MyLocationOverlay(); List<Overlay> overlays=myMapView.getOverlays(); overlays.add(myPosition); //设置Criteria(服务商)的信息 Criteria criteria =new Criteria(); //经度要求 criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(false); criteria.setPowerRequirement(Criteria.POWER_LOW); //取得效果最好的criteria String provider=locationManager.getBestProvider(criteria, true); //得到坐标相关的信息 Location location=locationManager.getLastKnownLocation(provider); //更新坐标 updateWithNewLocation(location); //注册一个周期性的更新,3000ms更新一次 //locationListener用来监听定位信息的改变 locationManager.requestLocationUpdates(provider, 3000, 0,locationListener); } private void updateWithNewLocation(Location location) { String latLongString; TextView myLocationText = (TextView)findViewById(R.id.TextView01); String addressString="没有找到地址\n"; if(location!=null) { //为绘制标志的类设置坐标 myPosition.setLocation(location); //取得经度和纬度 Double geoLat=location.getLatitude()*1E6; Double geoLng=location.getLongitude()*1E6; //将其转换为int型 GeoPoint point=new GeoPoint(geoLat.intValue(),geoLng.intValue()); //定位到指定坐标 mapController.animateTo(point); double lat=location.getLatitude(); double lng=location.getLongitude(); latLongString="纬度:"+lat+"\n经度:"+lng; double latitude=location.getLatitude(); double longitude=location.getLongitude(); //更具地理环境来确定编码 Geocoder gc=new Geocoder(this,Locale.getDefault()); try { //取得地址相关的一些信息\经度、纬度 List<Address> addresses=gc.getFromLocation(latitude, longitude,1); StringBuilder sb=new StringBuilder(); if(addresses.size()>0) { Address address=addresses.get(0); for(int i=0;i<address.getMaxAddressLineIndex();i++) sb.append(address.getAddressLine(i)).append("\n"); sb.append(address.getCountryName()); addressString=sb.toString(); } }catch(IOException e){} } else { latLongString="没有找到坐标.\n"; } //显示 myLocationText.setText("你当前的坐标如下:\n"+latLongString+"\n"+addressString); } private final LocationListener locationListener=new LocationListener() { //当坐标改变时触发此函数 public void onLocationChanged(Location location) { updateWithNewLocation(location); } //Provider被disable时触发此函数,比如GPS被关闭 public void onProviderDisabled(String provider) { updateWithNewLocation(null); } //Provider被enable时触发此函数,比如GPS被打开 public void onProviderEnabled(String provider){} //Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 public void onStatusChanged(String provider,int status,Bundle extras){} }; protected boolean isRouteDisplayed() { return false; } //为应用程序添加菜单 public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); menu.add(0, ZOOM_IN, Menu.NONE, "放大"); menu.add(0, ZOOM_OUT, Menu.NONE, "缩小"); return true; } public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); switch (item.getItemId()) { case (ZOOM_IN): //放大 mapController.zoomIn(); return true; case (ZOOM_OUT): //缩小 mapController.zoomOut(); return true; } return true; } class MyLocationOverlay extends Overlay { Location mLocation; //在更新坐标时,设置该坐标,一边画图 public void setLocation(Location location) { mLocation = location; } @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow); Paint paint = new Paint(); Point myScreenCoords = new Point(); // 将经纬度转换成实际屏幕坐标 GeoPoint tmpGeoPoint = new GeoPoint((int)(mLocation.getLatitude()*1E6),(int)(mLocation.getLongitude()*1E6)); mapView.getProjection().toPixels(tmpGeoPoint, myScreenCoords); paint.setStrokeWidth(1); paint.setARGB(255, 255, 0, 0); paint.setStyle(Paint.Style.STROKE); Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.home); canvas.drawBitmap(bmp, myScreenCoords.x, myScreenCoords.y, paint); canvas.drawText("Here am I", myScreenCoords.x, myScreenCoords.y, paint); return true; } } }
bixiaopeng机器人#7 · 2012/2/29
你给我看第46行就行了,,,,你贴这个没有import的代码,我也不知道到底那一行nullpointer了啊。。。
bixiaopeng机器人#8 · 2012/2/29
囧~或者前面标注行号也行,,,(P.S. 是和你日志打印的时候同版本的那个代码。。。) P.S. 你直接双击日志里面那个NPException下面那行定位的代码把跳转到的行贴了吧。。
conghaolin机器人#9 · 2012/2/29
【 在 bixiaopeng 的大作中提到: 】 : 囧~或者前面标注行号也行,,,(P.S. 是和你日志打印的时候同版本的那个代码。。。) : P.S. 你直接双击日志里面那个NPException下面那行定位的代码把跳转到的行贴了吧。。 不好意思,我怕只有那几行不全面。