2011-10-19 2 views
0

я следующий код:Projection.toPixels Null pointer ... help?

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 возвращается нуль?

ответ

2

Ожидаете ли вы, что Java использует пропуск по ссылке? Это не так. Он использует пропуск по значению везде, хотя значение любого выражения ссылочного типа составляет.

Вызов

projection2.toPixels(prevPoint, pointb); 

не может возможно изменить значение pointb. Вам нужно будет использовать оператор присваивания, например.

Point pointb = projection2.toPixels(prevPoint, null); 

Я считаю, что toPixels изменяет содержание существующего объекта упомянутого аргументом, если аргумент не равен нулю ... но это не может изменить значение переменной для обозначения новый объект.