質問

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.

他のヒント

You error is a NullPointerException, you should check that variable does not inicializaste or that is null.

start activity     ComponentInfo{com.Pakagename/com.Pakagename.subCategories.SubCategoriesActivity}:     java.lang.NullPointerException

I hope help you; and sorry for my english.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top