我有以下代码:
if(prevPoint != null){
Log.i("tracking class", "prevPoint: "+ prevPoint);
Point pointb = null;
Projection projection2 = mapView.getProjection();
projection2.toPixels(prevPoint, pointb);
Log.i("tracking class", "Pointb: "+ pointb);
Paint paint;
paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(2);
Log.i("tracking class", "Point x: "+ point.x);
Log.i("tracking class", "Point y: "+ point.y);
Log.i("tracking class", "Pointb x: "+ pointb.x);
Log.i("tracking class", "Pointb y: "+ pointb.y);
//canvas.drawLine(pointb.x, pointb.y, point.x, point.y, paint);
}
日志返回:
10-19 08:55:25.505: INFO/tracking class(29970): prevPoint: 41310173,-105558377
10-19 08:55:25.505: INFO/tracking class(29970): Pointb: null
有什么想法为什么 Pointb 返回 null 吗?
最佳答案
您是否希望 Java 使用引用传递?事实并非如此。尽管引用类型的任何表达式的值都是引用,但它到处都使用按值传递。
调用
projection2.toPixels(prevPoint, pointb);
可能无法更改pointb
的值。您需要使用赋值运算符,例如
Point pointb = projection2.toPixels(prevPoint, null);
我相信 toPixels
会更改参数引用的现有对象的内容(如果参数非空)...但它不可能改变引用新对象的变量值。
关于java - Projection.toPixels 空指针...有帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7823522/