2016-06-18 2 views
0

私は、共有の設定でMainActivityとクラスを持っています。utで何が間違っていますか?

public class MainActivity extends AppCompatActivity { 
    private SectionsPagerAdapter mSectionsPagerAdapter; 
    private ViewPager mViewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     if (DataStorage.getConfig(AppCore.getContext(),Const.FIRST).equals("true")){ 
      FragmentManager manager = getSupportFragmentManager(); 
      FirstDialog firstDialog = new FirstDialog(); 
      firstDialog.show(manager,"dialog"); 
      DataStorage.setConfig(AppCore.getActivity(), Const.FIRST,"false"); 
     } 
    } 
} 

、共有設定とデータ格納クラス:

public class DataStorage { 

    public static String getConfig(Context context, String name) { 
     return getConfig(context, name, ""); 
    } 

    public static String getConfig(Context context, String name, String defValue) { 
     SharedPreferences settings = context.getSharedPreferences(
       Const.NAME, 0); 
     String ret = settings.getString(name, defValue); 
     return ret; 
    } 

    public static void setConfig(Context context, String name, String value) { 
     SharedPreferences settings = context.getSharedPreferences(
       Const.NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putString(name, value); 
     editor.commit(); 
    } 
} 

は、だから私はなめらか、このようなエラーを言っている:

E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: nortti.ru.dogshelter, PID: 16246 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{nortti.ru.dogshelter/nortti.ru.dogshelter.activities.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2326) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) 
     at android.app.ActivityThread.access$800(ActivityThread.java:147) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5264) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.SharedPreferences android.content.Context.getSharedPreferences(java.lang.String, int)' on a null object reference 
     at nortti.ru.dogshelter.DataStorage.getConfig(DataStorage.java:15) 
     at nortti.ru.dogshelter.DataStorage.getConfig(DataStorage.java:11) 
     at nortti.ru.dogshelter.activities.MainActivity.onCreate(MainActivity.java:44) 
     at android.app.Activity.performCreate(Activity.java:5975) 
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)  
     at android.app.ActivityThread.access$800(ActivityThread.java:147)  
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)  
     at android.os.Handler.dispatchMessage(Handler.java:102)  
     at android.os.Looper.loop(Looper.java:135)  
     at android.app.ActivityThread.main(ActivityThread.java:5264)  
     at java.lang.reflect.Method.invoke(Native Method)  
     at java.lang.reflect.Method.invoke(Method.java:372)  
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:900)  
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:695)  

は、それは、コンテキスト内で間違っwomethingされる継ぎ合わせていますデータストレージ。

+0

アクティビティコンテキストを処理するのではなく、アプリケーションコンテキストを使用するシングルトンをDataStorageにする必要があります –

答えて

0

この行置換:NullPointerExceptionを引き起こすヌル

if (DataStorage.getConfig(AppCore.getContext(),Const.FIRST).equals("true")){ 

どういうわけAppCore.getContext()戻り、:問題は、このライン上にある

DataStorage.getConfig(this, Const.FIRST).equals("true") 
0

:このいずれかで

DataStorage.getConfig(AppCore.getContext(), Const.FIRST).equals("true") 

を。

これを修正するには、ここでnull以外のコンテキストインスタンスを渡すようにしてください。

関連する問題