Warum Stürtzt meine App ab? (Beim Öffnen von content_3)

  • 4 Antworten
  • Neuster Beitrag
J

javacoder

Neues Mitglied
Threadstarter
Hallo.

Ich bin neu hier und befasse mich auch erst seit 4 Tagen mit Java / Android.

Ich versuche gerade eine kleine App zu erstellen, die mir anzeigen soll wieviele Notitz Dateien im Verzeichnis "Notizen" sind. (Notiz.1, Notiz.2 ....)

Hier mal der Code dieser Funktion:

Code:
public ArrayList<String> GetFiles(String DirectoryPath) {
        ArrayList<String> MyFiles = new ArrayList<String>();
        File f = new File(DirectoryPath);

        f.mkdirs();
        File[] files = f.listFiles();
        if (files.length == 0)
            return null;
        else {
            for (int i=0; i<files.length; i++)
                MyFiles.add(files[i].getName());
        }

        return MyFiles;
    }





public void page3open (View view) {
        setContentView(R.layout.content_home3);
        ordner = new File(Environment.getExternalStorageDirectory(), "Notiz");
        if(ordner.exists()) {

            ArrayList<String> FilesInFolder = GetFiles(Environment.getExternalStorageDirectory() + "Notiz");
            ListView lv;
            lv = (ListView)findViewById(R.id.ListView31);

            lv.setAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, FilesInFolder));

            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                    // Clicking on items
                }
            });

        } else {

            final TextView textViewToChange = (TextView) findViewById(R.id.textView31);
            textViewToChange.setText("Keine Notiz gefunden.");
        }


    }


Wenn keine Notiz im Ordner liegt, zeigt mir die App das an, wenn jedoch eine Datei im Ordner liegt, stürtzt Sie ab anstatt die Datei(en) im Listview31 anzuzeigen...


Kann mir ja jemand weiter helfen? Ich tüftle schon 2 Stunden :D
 
Kardroid

Kardroid

Stammgast
Hallo javacoder,

auch wenn ich dir nicht ganz im Kontext helfen kann, möchte ich dir paar Tipps geben.
1. Dein setContentView in der Methode page3open sieht so aus, als ob du die Android Architektur nicht befolgst. Schau dir nochmal am besten die Beziehung zwischen Activities an.
2. Wenn deine App abstürzt ist es zu 95% eine NullPointerException und diese wird auch im Logcat angezeigt.

P.S.: vielleicht fehlt dir nen "/" in der zweiten Zeile in der Methode "page3open".
 
swa00

swa00

Moderator
Teammitglied
Und auch hier gilt :

Wir können Dir nur effektiv helfen , wenn du uns den ErrorLog und den dazugehörigen Quellcode lieferst.
[LEITFADEN] Wie bekomme ich hier die effektivste Hilfe ?

Ansonsten ist den Ausführungen von Kardroid nichts mehr hinzuzufügen.
Beherzige am besten erst mal seine "Einwände" :)
 
Zuletzt bearbeitet:
lordzwieback

lordzwieback

Erfahrenes Mitglied
Kardroid schrieb:
P.S.: vielleicht fehlt dir nen "/" in der zweiten Zeile in der Methode "page3open".
Das kann ich so bestätigen, der Fehler hatte sich bei mir auch mal eingeschlichen. Der Befehl
Environment.getExternalStorageDirectory() alleine liefert dir das Ergebnis ohne das abschließende "/". Wie das beim Aufruf über new File läuft, kann ich gerade nicht genau sagen.

Bzw wieso nutzt du im Aufruf deiner getFiles Methode nicht deine "ordner"-Variable, die du ein paar Zeilen obendrüber setzt? Ich glaube, dass er den Pfad im Befehl ordner = New File.... richtig setzt und auch in die if-Abfrage reinspringt, in welcher du prüfst, ob dein Pfad vorhanden ist. Aber beim Aufruf der getFiles-Methode setzt du den Pfad nochmal neu als Parameter ohne das "/". Optional kannst du auch einfach folgendes testen:
Code:
ArrayList<String> FilesInFolder = GetFiles(Environment.getExternalStorageDirectory() + "/Notiz");
Nichtsdestotrotz wären die Meldungen vom Crash aus dem logcat hilfreich. ;)
 
Zuletzt bearbeitet:
markus.tullius

markus.tullius

Experte
Hallo javacoder,

der Fehler mit großer Wahrscheinlichkeit liegt in der Zeile setContentView(R.layout.content_home3);

Du übergibst in der Methode ein View, daher vermute ich, dass du schon vorher setContentView aufgerufen hast. Damit hat das Layout deiner Activity schon ein root view. Diesen kannst du nachträglich nicht mehr überschreiben. Jeder Versuch führt zu einen Absturz der App.

Entweder benutzt du ein Adapter, oder ein LayoutInflater.

@Kardroid sehe gerade, das du den gleiche Tipp gegeben hast. Sorry.
 
Zuletzt bearbeitet:
Oben Unten