Hilfe bei Debugging meiner App

  • 7 Antworten
  • Letztes Antwortdatum
S

Simon2202

Neues Mitglied
0
Hallo Community!


Ich habe leider das Problem, dass meine App nicht startet "FilmStudio angehalten".

Vielleicht könnte jemand meinen Code durchsehen.

MainActivity: package com.simonic.filmstudio; import android.app.Activity; import android. - Pastebin.com

activity_login: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://sc - Pastebin.com

activity_studioreg: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sche - Pastebin.com

Und das ist das was bei logcat steht nur werde ich daraus überhaupt nicht schlau... 07-10 00:00:09.053 20433-20433/? E/dalvikvm﹕ >>>>> Normal User 07-10 00:00:0 - Pastebin.com


Ich hoffe mir kann jemand helfen... ich verzweifle seit knapp 2 Stunden daran...
 
Du rufst zu früh die getSharedPreferences() Methode aus.

Wie du das drch den Logcat herausgefunden hättest:

Guck nach der ersten Exception: in deinem Fall eine "Caused by NullPointerException".

Dann guck nach "at"+ein Hinweis auf einen Quellcode aus einem deiner Packages ist, dort steht auch die Zeile wo es passiert: in deinem Fall : "at com.simonic.filmstudio.MainActivity.<init>(MainActivity.java:13)" und in Zeile 13 wie man in den Klammern unschwer erkennen kann.


Also ab damit in die onCreate, denn diese ist wichtig dafür dass die Activity richtig funktioniert und als Context object benutzt werden kann!

Darüber hinaus machst du das gleiche mit dem Editor und schiebst das edit() auch in die onCreate nach dem sharedPrefs != null ist.
 
@Jaiel

Ich habe das Aufrufen und Speichern der Daten in 2 eigenen Klassen, was muss ich tun um das trotzdem umzusetzen? Wenn ich die 2 Zeilen von den SharedPreferences in onCreate schreibe, dann kann ich sie ja nichtmehr in anderen Klassen nutzen ?
 
Du sollst doch nciht die Objekt deklaration in onCreate drin haben...

Ausserhalb schreibst du einfach

SharedPreferences sp;
SP.Editor editor;


und die Initialisierungen dann in onCreate.
 
  • Danke
Reaktionen: Simon2202
Also.. keine Ahnung was ich falsch mache aber irgendwie werde ic überhaupt nicht schlau aus dem was der Debugger mir ausspuckt: 07-10 11:40:18.718 1024-1024/? E/memtrack﹕ Couldn't load memtrack module (N - Pastebin.com

Ich habe mir jetzt jede einzelne Zeile durchgelesen, geschaut ob irgendein Hinweis steht, die nach und nach abgearbeitet... aber aus dem kann ich nichts herauslesen was ich tun sollte..

Der Code:package com.simonic.filmstudio; import android.app.Activity; import android. - Pastebin.com

Ich bin am verzweifeln und google liefert keine Antworten mehr..

P.S Falls es hilft ich verwende zum Debuggen ein Samsung Galaxy Alpha mit Android 4.4.4
 
@Jaiel Gut, die App läuft jetzt soweit, dass die Logcat unter dem Reiter "android" keine Fehler mehr anzeigt, jedoch funktioniert das mit den SharedPreferences wohl nicht so wie ich mir das gedacht habe.
Das ist mein onCreate:

PHP:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Buttons
        startbutton = (Button) findViewById(R.id.startbutt);
        buttone = (Button)findViewById(R.id.stutRegButtE);
        buttonm = (Button)findViewById(R.id.stutRegButtM);
        buttonh = (Button)findViewById(R.id.stutRegButtH);
        //EditText
        edtext = (EditText)findViewById(R.id.editText); //SpielerName
        studiname = (EditText)findViewById(R.id.stutRegEdt); //StudioName
        loadprefs();
            if(regstat == false){
                setContentView(R.layout.activity_login);
            }
        setContentView(R.layout.activity_main);
    }

Und das ist meine Methode loadprefs
PHP:
public void loadprefs() {
        sharedPrefs = getSharedPreferences(FILENAME, MODE_PRIVATE);
        sharedPrefs.getBoolean("regstat", false);
        sharedPrefs.getString("pname", "Leer");
        sharedPrefs.getString("studname", "Leer");
        sharedPrefs.getInt("money", 0);
        sharedPrefs.getInt("dif", 0);
    }


Ich werde beim ersten start der App jedoch direkt zu activity_main und nicht zu activity_login geleitet.. Wie löse ich das? Gibt es eine Abfrage die ermittelt ob die App zum ersten mal gestartet wurde?[/PHP]
 
Zuletzt bearbeitet:
Ich weiß nicht wie ich auf den Code reagieren soll ...

Ob man prüfen kann dass eine Activity zum ersten mal gestartet ist? Ja...das ist der Fall wenn der Bundle savedInstanceState == null ist.

Warum du zur mainactivity umgeleitet wirst? weil du glaub ich etwas anderes von deinem code erwartest als du hingeschrieben hast.Du setzt für eine kurze Zeit den content view der Acivity als log in wenn die if abfrage true ergibt aber im nöchsten moment wird ja eh mainactivity als content gesetzt.

Du verwendest viel setContentView's um zwischen Ansichten zu wechseln. Das ist nicht gut. jede Activity, jedes Fragment etc. sollte einen content haben und nciht mehrere...dafür bietet Androideinfach so viele Möglichkeiten mehr einen content anzuzeigen.

Wie du das lösen könntest.

Bau eine Splashscreen activity ein die abfragt ob der User schon registriert ist. Wenn ja dann sofort in die obige activity...wenn nein dann in die log in activity...und dann im Anschluss ans einloggen in die main activity erst.


Viel Erfolg
 

Ähnliche Themen

4
Antworten
10
Aufrufe
1.080
jogimuc
J
G
Antworten
0
Aufrufe
132
Gerdchen07
G
G
Antworten
1
Aufrufe
384
Gerdchen07
G
G
Antworten
13
Aufrufe
596
Gerdchen07
G
L
Antworten
2
Aufrufe
553
Lexub
L
Zurück
Oben Unten