-1

Following Source is simplify my source code.

public class exfragment extends Fragment implements FragmentLifeCycle{
    Context mContext;
    DB db;

    public exfragment(){

    }

    public exfragment(Context context){
        mContext = context;
    }

    public void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState)
        db = new DB(mContext, "name.db", null, 1);
    }

    public void selectName(){
        db = DB.getReadableDatabase();
    }
}

This source code makes a error Because there is no constructor without arguments so, add a constructor without argument.

After I executed application including my source, click home button for executing in background. and then I executed some applications until they cause memory lack. When I restart application with my source code, application makes FATAL EXCEPTION.

db = DB.getReadableDatabase() method.

I think that it is caused by context problem. Because I insert constructor without argument, the context become Null.

please refer to following logcat message

04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime:  Caused by: java.lang.NullPointerException
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:224)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.database.sqlite.SQLiteOpenHelper.getReadableDatabase(SQLiteOpenHelper.java:188)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at sslab.com.sms_service.SmsReceiveListFragment.selectSmsList(SmsReceiveListFragment.java:494)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at sslab.com.sms_service.SmsReceiveListFragment.callSmsList(SmsReceiveListFragment.java:189)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at sslab.com.sms_service.SmsReceiveListFragment.onCreateView(SmsReceiveListFragment.java:103)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2042)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:165)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:543)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.app.Activity.performStart(Activity.java:5018)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.app.ActivityThread.access$600(ActivityThread.java:130) 
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.os.Looper.loop(Looper.java:137) 
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4745) 
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 
04-15 18:47:23.969 24132-24132/sslab.com.sms_service E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511) 
USER9561
  • 1,084
  • 3
  • 15
  • 41
JHKim
  • 13
  • 1
  • 3

1 Answers1

2

The error is that you've passing a null for a Context to SQLiteOpenHelper constructor.

To fix it in your case, use getActivity() in place for mContext in your fragment.

laalto
  • 150,114
  • 66
  • 286
  • 303