Android 在动态创建的活动中使用共享首选项

Android 在动态创建的活动中使用共享首选项,android,sharedpreferences,Android,Sharedpreferences,我有一个动态创建的活动,它没有onCreate()方法。在我的createView()方法中的一个onTouch()方法中使用SharedReference时遇到问题。调用GetSharedReferences()时,我得到一个空指针异常。我猜上下文为null,因为getApplicationContext()和getBaseContext()都会导致null指针异常。在这种情况下,如何使用共享首选项 以下是我的createView()代码: 以下是logcat输出: 07-04 09:52:4

我有一个动态创建的活动,它没有onCreate()方法。在我的createView()方法中的一个onTouch()方法中使用SharedReference时遇到问题。调用GetSharedReferences()时,我得到一个空指针异常。我猜上下文为null,因为getApplicationContext()和getBaseContext()都会导致null指针异常。在这种情况下,如何使用共享首选项

以下是我的createView()代码:

以下是logcat输出:

07-04 09:52:47.295: D/OverlayActivity(6146): onTouch
07-04 09:52:47.295: D/OverlayActivity(6146): Result is u=qwe&p=asd
07-04 09:52:47.295: E/InputEventReceiver(6146): Exception dispatching input event.
07-04 09:52:47.295: E/MessageQueue-JNI(6146): Exception in MessageQueue callback: handleReceiveCallback
07-04 09:52:47.305: E/MessageQueue-JNI(6146): java.lang.NullPointerException
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:161)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at com.example.test.OverlayActivity$2.onTouch(OverlayActivity.java:186)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.View.dispatchTouchEvent(View.java:7293)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2179)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1914)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.View.dispatchPointerEvent(View.java:7514)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3679)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3623)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4798)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4777)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4873)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:208)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.os.MessageQueue.nativePollOnce(Native Method)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.os.MessageQueue.next(MessageQueue.java:125)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.os.Looper.loop(Looper.java:135)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.app.ActivityThread.main(ActivityThread.java:5751)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at java.lang.reflect.Method.invokeNative(Native Method)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at java.lang.reflect.Method.invoke(Method.java:511)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at dalvik.system.NativeStart.main(Native Method)
07-04 09:52:47.305: W/dalvikvm(6146): threadid=1: thread exiting with uncaught exception (group=0x40c34a08)
07-04 09:52:47.310: E/AndroidRuntime(6146): FATAL EXCEPTION: main
07-04 09:52:47.310: E/AndroidRuntime(6146): java.lang.NullPointerException
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:161)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at com.example.test.OverlayActivity$2.onTouch(OverlayActivity.java:186)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.View.dispatchTouchEvent(View.java:7293)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2179)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1914)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.View.dispatchPointerEvent(View.java:7514)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3679)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3623)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4798)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4777)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4873)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:208)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.os.MessageQueue.nativePollOnce(Native Method)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.os.MessageQueue.next(MessageQueue.java:125)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.os.Looper.loop(Looper.java:135)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.app.ActivityThread.main(ActivityThread.java:5751)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at java.lang.reflect.Method.invokeNative(Native Method)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at java.lang.reflect.Method.invoke(Method.java:511)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at dalvik.system.NativeStart.main(Native Method)

我做错了什么?

好的,我可以在构造函数中使用上下文。我真傻。

好吧,我可以在构造函数中使用上下文。我真傻。

getActivity()有效吗?这是活动吗?我只是看到您动态创建了一个布局。createView方法在哪个类中?getActivity()工作吗?这是一个活动吗?我只是看到您动态创建了一个布局。createView方法在哪个类中?
07-04 09:52:47.295: D/OverlayActivity(6146): onTouch
07-04 09:52:47.295: D/OverlayActivity(6146): Result is u=qwe&p=asd
07-04 09:52:47.295: E/InputEventReceiver(6146): Exception dispatching input event.
07-04 09:52:47.295: E/MessageQueue-JNI(6146): Exception in MessageQueue callback: handleReceiveCallback
07-04 09:52:47.305: E/MessageQueue-JNI(6146): java.lang.NullPointerException
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:161)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at com.example.test.OverlayActivity$2.onTouch(OverlayActivity.java:186)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.View.dispatchTouchEvent(View.java:7293)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2179)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1914)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.View.dispatchPointerEvent(View.java:7514)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3679)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3623)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4798)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4777)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4873)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:208)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.os.MessageQueue.nativePollOnce(Native Method)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.os.MessageQueue.next(MessageQueue.java:125)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.os.Looper.loop(Looper.java:135)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at android.app.ActivityThread.main(ActivityThread.java:5751)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at java.lang.reflect.Method.invokeNative(Native Method)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at java.lang.reflect.Method.invoke(Method.java:511)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
07-04 09:52:47.305: E/MessageQueue-JNI(6146):   at dalvik.system.NativeStart.main(Native Method)
07-04 09:52:47.305: W/dalvikvm(6146): threadid=1: thread exiting with uncaught exception (group=0x40c34a08)
07-04 09:52:47.310: E/AndroidRuntime(6146): FATAL EXCEPTION: main
07-04 09:52:47.310: E/AndroidRuntime(6146): java.lang.NullPointerException
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:161)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at com.example.test.OverlayActivity$2.onTouch(OverlayActivity.java:186)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.View.dispatchTouchEvent(View.java:7293)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2179)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1914)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2185)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1886)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.View.dispatchPointerEvent(View.java:7514)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3679)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3623)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4798)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4777)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4873)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:208)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.os.MessageQueue.nativePollOnce(Native Method)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.os.MessageQueue.next(MessageQueue.java:125)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.os.Looper.loop(Looper.java:135)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at android.app.ActivityThread.main(ActivityThread.java:5751)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at java.lang.reflect.Method.invokeNative(Native Method)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at java.lang.reflect.Method.invoke(Method.java:511)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
07-04 09:52:47.310: E/AndroidRuntime(6146):     at dalvik.system.NativeStart.main(Native Method)