Android getApplicationContext Nullpointerexception - PullRequest
1 голос
/ 09 января 2011

Я пытаюсь сохранить местоположение через контекст приложения, поэтому я сделал следующее:

myApp Class:

import android.app.Application;

импорт com.google.android.maps.GeoPoint;

public class myApp extends Application {

  private GeoPoint Tunis = new GeoPoint(microdegrees(36.827589),microdegrees(10.171165));
  private GeoPoint myLocation=Tunis;

  public GeoPoint getMyLocation(){
    return myLocation;
  }
  public void setMyLocation(GeoPoint s){
    myLocation = s;
  }
  private int microdegrees(double value){
   return (int)(value*1000000);
  }

}

Мой манифест:

<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".myApp">
        <uses-library android:name="com.google.android.maps"/>
        <activity android:name=".Main"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>

и в своей основной деятельности я сделал это:

myApp appState = ((myApp)getApplicationContext());

и это вызывает исключение NullPointerException при запуске приложения :( Подскажите, пожалуйста, почему возникает это исключение? Я думал, что в классе myApp я инициализировал MyLocation для существующей GeoPoint?

Спасибо

1 Ответ

1 голос
/ 09 января 2011

Прошу прощения за беспокойство, я решил это следующим образом: 1- Добавление конструктора в myApp:

public class myApp extends Application {

  public GeoPoint Tunis = new GeoPoint(microdegrees(36.827589),microdegrees(10.171165));
  public GeoPoint myLocation;

  public myApp(){
      super();
      myLocation=Tunis;
  }
  public GeoPoint getMyLocation(){
    return myLocation;
  }
  public void setMyLocation(GeoPoint s){
    myLocation = s;
  }
  private int microdegrees(double value){
      return (int)(value*1000000);
  }
}

2- Объявление следующего в моей основной активности в onCreate void

appState = ((myApp)getApplicationContext());

вот так:

public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      GeoPoint Tunis = new GeoPoint(microdegrees(36.827589),microdegrees(10.171165));
      MyMap=(MapView)findViewById(R.id.MyGMap);
      MyMap.setBuiltInZoomControls(true);
      MyController=MyMap.getController();
      MyController.setZoom(12);
      MyController.setCenter(Tunis);
      appState = ((myApp)getApplicationContext());

спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...