MapView обнуляется независимо от того, что я делаю в Android.В чем может быть ошибка? - PullRequest
0 голосов
/ 29 марта 2012

Это мой LocationActivity:

public class LocationActivity extends MapActivity{

    GeoPoint p;
    Bundle bundle;

    ArrayList <String> address  = new ArrayList<String>();

    MapController mc;
    private LocationManager locationManager;


    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.map);

        MapView mapView = (MapView)findViewById(R.id.mapView1);

        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

         Criteria criteria = new Criteria();
           // criteria.setAccuracy(Criteria.ACCURACY_FINE);
             criteria.setAltitudeRequired(false);
             criteria.setBearingRequired(false);
             criteria.setCostAllowed(true);
             String strLocationProvider = lm.getBestProvider(criteria, true);

        Location location = lm.getLastKnownLocation(strLocationProvider);

        if (location == null)
        {
            Toast.makeText(LocationActivity.this, "working", Toast.LENGTH_LONG);
        }
        double   lat =  (double) location.getLongitude();
        double lon = (double) location.getLatitude();

        p = new GeoPoint(
              (int) (lat * 1E6), 
              (int) (lon * 1E6));

        mc = mapView1.getController();
        //        mc.setCenter(new GeoPoint(29450116, 77312191));
        mc.animateTo(p);
        mapView1.setClickable(true);
        mapView1.setBuiltInZoomControls(true);
        mapView1.setSatellite(true);
        mapView1.setTraffic(true);

        mapView1.invalidate();

    }

    @Override
    protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
    }
}

Это моя карта.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <com.google.android.maps.MapView 
        android:id="@+id/mapView1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:enabled="true"
        android:clickable="true"
         android:apiKey="04KR0_lkSRZxCk_JC9yIkk50f3ZE_JjBT7HJ6jw"
        />

    <Button 
        android:text="Add Location" 
        android:id="@+id/mapButton" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content">
    </Button>
</RelativeLayout>

Я очистил свой проект. Создан новый макет, чтобы проверить, работает ли он или нет, но мой MapView выходит пустым, и я получаю исключение нулевого указателя. В чем может быть ошибка?

Ответы [ 3 ]

1 голос
/ 29 марта 2012

Я согласен с px3j; если вы перешли с MapView mapView = (MapView)findViewById(R.id.mapView1); на MapView mapView1 = (MapView)findViewById(R.id.mapView1);, пожалуйста, обновите ваш вопрос.

0 голосов
/ 29 марта 2012

check getLastKnownLocation ()

Бросает IllegalArgumentException, если провайдер нулевой или не существует

, вы должны использовать блок try-catch:

mc = mapView.getController();
try {
    Location location = lm.getLastKnownLocation(strLocationProvider);
    if (location != null) {
        double lat =  (double) location.getLongitude();
        double lon = (double) location.getLatitude();
        p = new GeoPoint((int) (lat * 1E6),  (int) (lon * 1E6));
        mc.animateTo(p);
    }
} catch (IllegalArgumentException e) {
    e.printStackTrace();
}

По вашим критериям провайдер не найден, вам нужно настроить его.

0 голосов
/ 29 марта 2012

Похоже, что вы присваиваете mapView, но используете mapView1.

    // Assigning the value to mapView
    MapView mapView = (MapView)findViewById(R.id.mapView1);

    // accessing mapView1
    mc = mapView1.getController();  // Is this generating the NPE?

Надеюсь, это поможет ...

...