2016-07-04 5 views
1

私は、onCreate()メソッドを持たない動的に作成されたアクティビティを持っています。私はcreateView()メソッドにあるonTouch()メソッドの一つでSharedPreferencesを使うのに問題があります。 getSharedPreferences()を呼び出すとnullポインタ例外が発生します。 getApplicationContext()とgetBaseContext()の両方がnullポインタ例外を引き起こすため、コンテキストがnullであると推測しています。この場合、どのように共有環境設定を使用できますか?ここで動的に作成されたアクティビティで共有設定を使用する

public void createView(){ 
    params = new WindowManager.LayoutParams(
      WindowManager.LayoutParams.MATCH_PARENT, 
      WindowManager.LayoutParams.MATCH_PARENT, 
      WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, 
      WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, 
      PixelFormat.TRANSLUCENT); 

    RelativeLayout mainView = new RelativeLayout(service); 

    LinearLayout l = new LinearLayout(service); 
    RelativeLayout.LayoutParams param_one = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    l.setTag(first_tag); 
    l.setOrientation(LinearLayout.VERTICAL); 

    EditText second_test = new EditText(service); 
    second_test.setTextColor(Color.LTGRAY); 
    second_test.setWidth(440); 
    second_test.setTag(second_tag); 
    second_test.setTextSize(20); 
    LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    second_test.setLayoutParams(llp); 
    l.addView(second_test); 
    mainView.addView(l, param_one); 
    LinearLayout bottomLayout = new LinearLayout(service); 
    bottomLayout.setBackgroundColor(0x00ff0000); 
    RelativeLayout.LayoutParams bottomparam = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); 

    bottomLayout.setOnTouchListener(new OnTouchListener(){ 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Log.d(TAG, "onTouch"); 
      View k = (View)v.getParent(); 
      LinearLayout l = (LinearLayout) k.findViewWithTag(first_tag); 
      EditText second_test = (EditText) l.findViewWithTag(second_tag); 

      if(!second_test.getText().toString().isEmpty()){ 
       String result = second_test.getText().toString(); 
       Log.d(TAG, "Result is " + result); 
       SharedPreferences prefs = getSharedPreferences(TAG, MODE_PRIVATE); 
       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putString("result", result); 
       editor.commit(); 
       finish(); 
      } 
      return true; 
     } 
    }); 
    mainView.addView(bottomLayout, bottomparam); 
    overlayView = mainView;  
} 

logcat出力です:

は、ここに私の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) 

私が間違って何をしました

+0

* getActivity()*は機能しますか? –

+0

これは活動ですか?レイアウトを動的に作成したことがわかりました。どのクラスがcreateViewのメソッドですか? –

答えて

0

OK、私はコンストラクタでコンテキストを使用することができます。愚かな私。

関連する問題