Я пытаюсь сохранить местоположение через контекст приложения, поэтому я сделал следующее:
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- Добавление конструктора в 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());
спасибо