alexnavratil
alexnavratil

Reputation: 979

Android Developing App crashes on startup

I currently develop an application which contains a custom ListView. I developed a custom array adapter. I think my app crashes here:

ListView DirectoryView = (ListView) findViewById(R.id.fileListView);

So i think the error is in the activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<ListView
    android:id="@+id/fileListView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1" >
</ListView>

Here is my LogCat:

09-09 11:19:21.254: E/Trace(1152): error opening trace file: No such file or directory (2)
09-09 11:19:21.484: D/AndroidRuntime(1152): Shutting down VM
09-09 11:19:21.484: W/dalvikvm(1152): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
09-09 11:19:21.504: E/AndroidRuntime(1152): FATAL EXCEPTION: main
09-09 11:19:21.504: E/AndroidRuntime(1152): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.teamdroid.explorer/com.teamdroid.explorer.MainActivity}: java.lang.NullPointerException
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.os.Looper.loop(Looper.java:137)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.ActivityThread.main(ActivityThread.java:4745)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at java.lang.reflect.Method.invokeNative(Native Method)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at java.lang.reflect.Method.invoke(Method.java:511)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at dalvik.system.NativeStart.main(Native Method)
09-09 11:19:21.504: E/AndroidRuntime(1152): Caused by: java.lang.NullPointerException
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.Activity.findViewById(Activity.java:1825)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at com.teamdroid.explorer.listDirectory.getDirectory(listDirectory.java:20)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at com.teamdroid.explorer.MainActivity.onCreate(MainActivity.java:33)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.Activity.performCreate(Activity.java:5008)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
09-09 11:19:21.504: E/AndroidRuntime(1152):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
09-09 11:19:21.504: E/AndroidRuntime(1152):     ... 11 more

Please can you help me. I am searching this error for 2 day. thanks!

EDIT: I have a third file which lists a directory in this listview:

    public class listDirectory extends ListActivity {

    String[] DirList;

    public void onCreate(Bundle icicle) {
        setContentView(R.layout.activity_main);
        super.onCreate(icicle);
    }   

    public void getDirectory (){
        MainActivity main = new MainActivity();
        String path = main.getPath();

        ListView DirectoryView = (ListView) findViewById(R.id.fileListView);
        CustomArrayAdapter adapter = new CustomArrayAdapter(getApplicationContext(), DirList);

        File file = new File(path);
        File[] FileList = file.listFiles();

        java.util.Arrays.sort(FileList);

        for(int i = 0; i < FileList.length; i++){
            if(FileList[i].isDirectory()){
                DirList[i] = (FileList[i].getName() + " [folder]");
            } else{
                DirList[i] = (FileList[i].getName() + " [file]");
            }
         }

         DirectoryView.setAdapter(adapter);
    }
}

I think in this file is the error.

Upvotes: 0

Views: 1481

Answers (2)

j2R
j2R

Reputation: 46

Very confusing code...

I think in your MainActivity you new a instance of listDirectory, this does not get listDirectory.onCreate() called, so content view is null. so findViewById() inside listDirectory.getDirectory() finds view in listDirectory's content view not MainActivity's which is null and cause NPE

Upvotes: 0

Ali Behzadian Nejad
Ali Behzadian Nejad

Reputation: 9044

I think that you did not set content view inside onCreate() method and therefor findViewById is unable to find view objects and so returns null.

Assume that your XML layout file is my_layout.xml. Inside onCreate(...) add this line:

setContentView(R.layout.my_layout);

Upvotes: 1

Related Questions