문제

I want to copy the contents of packageList1 into the field mainPackageInfo of class packageList_debug. Below is my code & also my failing stacktrace. (the app crashes)

What am I doing wrong here?

In my main Activity inside onCreate function:

List<PackageInfo> packageList1;
List<MyPackageInfo> packageList_debug;
packageManager = getPackageManager();
packageList1 = packageManager.getInstalledPackages(0);

MyPackageInfo temp_MyPackageInfo = null;
    for(int i=0 ; i < packageList1.size() ; i++) {
        temp_MyPackageInfo.setMainPackageInfo(packageList1.get(i));
        temp_MyPackageInfo.setSelected(true);
        packageList_debug.set(i, temp_MyPackageInfo);
    }   

The failing line number (as per Stacktrace shown below) is 556, which is the following line in the code above: temp_MyPackageInfo.setMainPackageInfo(packageList1_l.get(i));

My Custom Class MyPackageInfo:

import android.content.pm.PackageInfo;

public class MyPackageInfo {

private PackageInfo mainPackageInfo;
private boolean selected;

public MyPackageInfo(PackageInfo mainPackageInfo) {
    super();
    this.mainPackageInfo = mainPackageInfo;
}

public PackageInfo getMainPackageInfo() {
    return mainPackageInfo;
}

public void setMainPackageInfo(PackageInfo mainPackageInfo) {
    this.mainPackageInfo = mainPackageInfo;
}

public boolean isSelected() {
    return selected;
}

public void setSelected(boolean selected) {
    this.selected = selected;
}
}

My failing Stacktrace error:

05-07 02:30:39.715: E/AndroidRuntime(3975): FATAL EXCEPTION: main
05-07 02:30:39.715: E/AndroidRuntime(3975): java.lang.RuntimeException: Unable to start activity     ComponentInfo{com.mavdev.focusoutfacebook/com.mavdev.focusoutfacebook.MainActivityCircularSeekbar}:     java.lang.NullPointerException
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2359)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.ActivityThread.access$700(ActivityThread.java:165)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.os.Looper.loop(Looper.java:137)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.ActivityThread.main(ActivityThread.java:5455)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at java.lang.reflect.Method.invokeNative(Native Method)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at java.lang.reflect.Method.invoke(Method.java:525)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at dalvik.system.NativeStart.main(Native Method)
05-07 02:30:39.715: E/AndroidRuntime(3975): Caused by: java.lang.NullPointerException
05-07 02:30:39.715: E/AndroidRuntime(3975):     at com.mavdev.focusoutfacebook.MainActivityCircularSeekbar.copyPACKAGELIST1toMYPACKAGEINFO(MainActivityCircularSeekbar.java:556)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at com.mavdev.focusoutfacebook.MainActivityCircularSeekbar.onCreate(MainActivityCircularSeekbar.java:542)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.Activity.performCreate(Activity.java:5372)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
05-07 02:30:39.715: E/AndroidRuntime(3975):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
05-07 02:30:39.715: E/AndroidRuntime(3975):     ... 11 more
도움이 되었습니까?

해결책

This is because you have just declared variable for MyPackageInfo temp_MyPackageInfo = null; not initialized it. So you need to initialize.

temp_MyPackageInfo = new MyPackageInfo(); 

Need to make Constructor in your MyPackageInfo class like

public void MyPackageInfo() {

}

다른 팁

temp_MyPackageInfo is null when you go in the loop so this line fails:

temp_MyPackageInfo.setMainPackageInfo(packageList1.get(i));

You should create a default constructor and initialize it first

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top