0

アプリケーションでクラスを使用してセッションを作成し、アクティビティ間の移動変数などを保存できるようにします。そのために使用する特定のクラスがSharedPrefrencesあります。

オーバーレイとアイテムが表示された Google マップもあります。onTap私の目的は、イベントが発生したときに地理位置情報を保存できるようにすることです。

この目的のために、SessionManagerクラス (SharedPrefrences を使用) に 2 つ目の void を作成し、onTapイベント内で呼び出します。問題は、私が直面したことNullPointerExceptionです。ボイド内の変数はマップから適切に収集され、null ではありません。これは onTap イベント内にあります。

GeoPoint mPoint;
  OverlayItem item = mOverlays.get(index);
  mPoint = item.getPoint();

session.mapInputs(Double.toString(mPoint.getLatitudeE6()/1E6), Double.toString(mPoint.getLongitudeE6()/1E6);

私が電話するとmapInputs()、に直面しましたNullPointerException。を取得するすべての理由が何であるかはNullPointerExceptionわかりません。ボイドで渡された変数をダブルチェックしましたが、それらは空ではありません。で新しいクラスを作成しようとしましたSharedPrefrencesが、同じ問題が再び発生します。

だから私は自分が間違っていることを理解できません..

これが私のLogcatエラーです(MapFeederの60行目はmapInputs voidです):

01-04 15:47:37.999: E/AndroidRuntime(308): FATAL EXCEPTION: main
01-04 15:47:37.999: E/AndroidRuntime(308): java.lang.NullPointerException
01-04 15:47:37.999: E/AndroidRuntime(308):  at        com.cabman.lol.ok.MapFeeder.onTap(MapFeeder.java:60)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.google.android.maps.ItemizedOverlay.onTap(ItemizedOverlay.java:453)
01-04 15:47:37.999: E/AndroidRuntime(308):  at  com.google.android.maps.OverlayBundle.onTap(OverlayBundle.java:83)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.google.android.maps.MapView$1.onSingleTapUp(MapView.java:347)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.google.android.maps.GestureDetector.onTouchEvent(GestureDetector.java:533)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.google.android.maps.MapView.onTouchEvent(MapView.java:647)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.view.View.dispatchTouchEvent(View.java:3766)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:897)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
01-04 15:47:37.999: E/AndroidRuntime(308):  at     android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:936)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1671)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.app.Activity.dispatchTouchEvent(Activity.java:2086)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1655)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1785)
01-04 15:47:37.999: E/AndroidRuntime(308):  at    android.os.Handler.dispatchMessage(Handler.java:99)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.os.Looper.loop(Looper.java:123)
01-04 15:47:37.999: E/AndroidRuntime(308):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-04 15:47:37.999: E/AndroidRuntime(308):  at java.lang.reflect.Method.invokeNative(Native Method)
01-04 15:47:37.999: E/AndroidRuntime(308):  at java.lang.reflect.Method.invoke(Method.java:521)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-04 15:47:37.999: E/AndroidRuntime(308):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-04 15:47:37.999: E/AndroidRuntime(308):  at dalvik.system.NativeStart.main(Native Method)

これも私の SessionManger クラスの一部です。

public class SessionManager {


SharedPreferences pref;

Editor editor;

Context context;

int PRIVATE_MODE = 0;

....

 public SessionManager(Context context){

    this.context = context;
    pref = context.getSharedPreferences(PREF_NAME,PRIVATE_MODE);
    editor = pref.edit();
}

....

    public void mapInputs(String startLat,  String startLon ){

editor.putString(KEY_LAT, startLat);
editor.putString(KEY_LON, startLon);
editor.commit();

}

4

0 に答える 0