Considering my this Previous question question , i am still unable to find that, why wifi state change causes app crashed, getting back from launcher while my app was onreume state, it changes on resume to oncreate, and app get crashed, i tried to save an id in sharedPref at onstop of my 2nd activity, but still crashed..
Here is logcat :
12-05 17:14:39.966: E/AndroidRuntime(29449): FATAL EXCEPTION: main
12-05 17:14:39.966: E/AndroidRuntime(29449): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Pakagename/com.Pakagename.subCategories.SubCategoriesActivity}: java.lang.NullPointerException
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2205)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2240)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.ActivityThread.access$600(ActivityThread.java:139)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.os.Looper.loop(Looper.java:156)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.ActivityThread.main(ActivityThread.java:4977)
12-05 17:14:39.966: E/AndroidRuntime(29449): at java.lang.reflect.Method.invokeNative(Native Method)
12-05 17:14:39.966: E/AndroidRuntime(29449): at java.lang.reflect.Method.invoke(Method.java:511)
12-05 17:14:39.966: E/AndroidRuntime(29449): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-05 17:14:39.966: E/AndroidRuntime(29449): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-05 17:14:39.966: E/AndroidRuntime(29449): at dalvik.system.NativeStart.main(Native Method)
12-05 17:14:39.966: E/AndroidRuntime(29449): Caused by: java.lang.NullPointerException
12-05 17:14:39.966: E/AndroidRuntime(29449): at com.Pakagename.subCategories.SubCategoriesActivity.getSubCategories(SubCategoriesActivity.java:119)
12-05 17:14:39.966: E/AndroidRuntime(29449): at com.Pakagename.subCategories.SubCategoriesActivity.onCreate(SubCategoriesActivity.java:90)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.Activity.performCreate(Activity.java:4538)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
12-05 17:14:39.966: E/AndroidRuntime(29449): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161)
12-05 17:14:39.966: E/AndroidRuntime(29449): ... 11 more
12-05 17:14:39.976: E/EmbeddedLogger(1627): App crashed! Process: com.Pakagename
12-05 17:14:39.976: E/EmbeddedLogger(1627): App crashed! Package: com.Pakagename v2 (1.0)
here is what i am doing in oncreate of subcategoryActivity
if(getIntent().hasExtra("categoryid")) {
if(getIntent().getStringExtra("categoryid") != null) {
categoryId = Integer.parseInt(getIntent().getStringExtra("categoryid"));
getSubCategories(categoryId);
}
} else {
getSubCategories(categoryIdFromPref); // getting an id from pref, that iam saving in onstop
}
and getSubCategories method,
private void getSubCategories(int categoryId) {
if(categoryId!=0) {
query = "SELECT * FROM sub_categories WHERE category_id = "+categoryId+" AND is_archived = 0";
Log.d("subCategory query", query);
c = MainActivity.db.rawQuery(query, null);
c.moveToFirst();
}
}
logcat take me to this line after i check,
c = MainActivity.db.rawQuery(query, null);
and my manifest look like,
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
<activity
android:name="com.Pakagename.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.Pakagename.SplashScreenActivity"
android:parentActivityName="com.Pakagename.MainActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:screenOrientation="portrait"
android:value="com.Pakagename.MainActivity" />
</activity>
<activity
android:name="com.Pakagename.subCategories.SubCategoriesActivity"
android:screenOrientation="portrait"
</activity>
The static variable db
inside MainActivity
is null. That causes the nullpointer. If you fix that, the error will be fixed as well. It's probably best to not use the static db
variable inside MainActivity, but to reopen the database inside SubCategoriesActivity
.