Java 在onDrag函数中保存坐标时出现问题

Java 在onDrag函数中保存坐标时出现问题,java,android,drag-and-drop,sharedpreferences,coordinates,Java,Android,Drag And Drop,Sharedpreferences,Coordinates,我正在编写一个应用程序,用户可以在其中购买建筑物(图像按钮),并使用拖放API自由移动它们。我想做的是保存建筑物的坐标,这样就可以将它们加载回原来的位置。我目前正在尝试使用共享首选项,但在onDrag函数中使用它时,效果似乎不太好。你知道最好的方法是什么吗 下面是类中应获取要使用的坐标的代码(在runGraphics类中): 以下是保存坐标的代码(位于ColonyHuttrag类的onDrag函数中): 我收到的错误是由于类中没有某种类型的setContentView,但由于这只是一个实现onD

我正在编写一个应用程序,用户可以在其中购买建筑物(图像按钮),并使用拖放API自由移动它们。我想做的是保存建筑物的坐标,这样就可以将它们加载回原来的位置。我目前正在尝试使用共享首选项,但在onDrag函数中使用它时,效果似乎不太好。你知道最好的方法是什么吗

下面是类中应获取要使用的坐标的代码(在runGraphics类中):

以下是保存坐标的代码(位于ColonyHuttrag类的onDrag函数中):

我收到的错误是由于类中没有某种类型的setContentView,但由于这只是一个实现onDrag函数的类,因此它不需要setContentView。如果你有什么更好的方法来解决这个问题,或者如何解决这个问题,请告诉我

谢谢各位

编辑:

我试图通过以下方式解决我的问题:

Context context = getApplicationContext();
prefs = context.getSharedPreferences("Coordinates", Context.MODE_PRIVATE);
但我还是犯了同样的错误

日志:

07-24 15:23:59.611: E/AndroidRuntime(29287): FATAL EXCEPTION: main
07-24 15:23:59.611: E/AndroidRuntime(29287): Process: com.project.llb, PID: 29287
07-24 15:23:59.611: E/AndroidRuntime(29287): java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at com.twentytwentythree.sab.ColonyHutDrag.onDrag(ColonyHutDrag.java:48)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.View.dispatchDragEvent(View.java:17635)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1300)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:5338)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewRootImpl.access$1100(ViewRootImpl.java:118)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3487)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.os.Handler.dispatchMessage(Handler.java:102)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.os.Looper.loop(Looper.java:157)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.app.ActivityThread.main(ActivityThread.java:5872)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at java.lang.reflect.Method.invoke(Native Method)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)

如果您没有使用
活动
,则需要使用一些上下文调用
getSharedReferences

请看我添加到帖子中的编辑。谢谢。我为您添加了logcat。我知道,
getApplicationContext()
返回null。所以,您需要从某些活动传递上下文。通过构造函数将上下文(this)从
活动传递到此类。
Context context = getApplicationContext();
prefs = context.getSharedPreferences("Coordinates", Context.MODE_PRIVATE);
07-24 15:23:59.611: E/AndroidRuntime(29287): FATAL EXCEPTION: main
07-24 15:23:59.611: E/AndroidRuntime(29287): Process: com.project.llb, PID: 29287
07-24 15:23:59.611: E/AndroidRuntime(29287): java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.content.Context.getApplicationContext()' on a null object reference
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at com.twentytwentythree.sab.ColonyHutDrag.onDrag(ColonyHutDrag.java:48)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.View.dispatchDragEvent(View.java:17635)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1300)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewGroup.dispatchDragEvent(ViewGroup.java:1286)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewRootImpl.handleDragEvent(ViewRootImpl.java:5338)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewRootImpl.access$1100(ViewRootImpl.java:118)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3487)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.os.Handler.dispatchMessage(Handler.java:102)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.os.Looper.loop(Looper.java:157)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at android.app.ActivityThread.main(ActivityThread.java:5872)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at java.lang.reflect.Method.invoke(Native Method)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:852)
07-24 15:23:59.611: E/AndroidRuntime(29287):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:668)