Android getApplicationContext Nullpointerexception

1

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

myApp Класс:

import android.app.Application;

import 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
    Без дополнительного исходного кода и полной трассировки стека никто не сможет вам сильно помочь.
Теги:
nullpointerexception

1 ответ

1

Прошу прощения за беспокойство, я решил это: 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());

спасибо

  • 10
    Чтобы быть более точным: проблема в том, что вы не можете получить доступ к getApplicationContext () до того, как будет создано действие, то есть до вызова onCreate.
  • 0
    Спасибо MasterScrat

Ещё вопросы

Сообщество Overcoder
Наверх
Меню