gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 12:42:55 25 4
gpt4 key购买 nike

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

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

SharedPreferences prefs = getSharedPreferences("Coordinates", MODE_PRIVATE);
colonyHutX = prefs.getInt("ColonyHutX", 0);
colonyHutY = prefs.getInt("ColonyHutY", 0);
Toast.makeText(getApplicationContext(), "X: " + colonyHutX + " Y: " + colonyHutY, Toast.LENGTH_SHORT).show();

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

SharedPreferences prefs = getSharedPreferences("Coordinates", MODE_PRIVATE);
Editor edit = prefs.edit();
edit.putInt("ColonyHutX", x);
edit.putInt("ColonyHutY", y);
edit.commit();

我收到的错误是由于类中没有某种 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)

最佳答案

如果您没有使用Activity,则需要使用一些上下文调用getSharedPreferences

关于java - 在 onDrag 函数中保存坐标时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24924707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com