App schließt sich ohne bekannten Grund.

  • Guten Tag liebe Community,
    mein derzeitiges Anliegen ist ein Problem welches ich habe bei dem Start meiner ersten App habe.
    Ich wollte für den ersten Versuch etwas sehr simples ausprobieren.
    Es handelt sich hierbei einzig und allein um die Funktion "textview.setTextColor(Color.RED)" bzw. diese Methode 6 mal(rot,grün,blau,gelb,violett und schwarz).
    Als ich nur die Buttons und dessen Text/Textfarbe eingestellt habe funktionierte die app Problemlos, als ich jedoch dann die erste Funktion einbaute öffnete mein Handy die app nichtmehr("APPNAME wurde beendet").


    Hier der Code der Activity.java:


    Hier der Code der main.xml:

  • Ist vielleicht nur ein Typo, aber:

    Zitat

    setContentView(R.layout.activity_main);


    vs.


    Zitat

    Hier der Code der main.xml:


    Würde dein Problem vollständig erklären.
    Wenn es das nicht war und du Hilfe erwartest, dann bitte zukünftig ein Logcat mit posten :)

  • Das ist kein Android--Logcat :)


    Sieht eher so aus wie ein Log vom Versuch seitens Eclipse, den LogCat-View überhaupt mal zu öffnen.


    Den View kannst du öffnen via Window / Show View / Other / LogCat
    (evtl. siehst du da 2 solche Einträge, dann nimmste den ohne "Deprecated")

  • Mein LogCat ist geöffnet, jedoch wenn ich versuche einen bestimmten Fehlerrang(error,debug,verbose...) auszuwählen, oder einen Filter zu erstellen, dann geht eclipse direkt auf den Errorlog tab.

  • Speichern kannst du die Daten mit Strg+A und dann auf das Disk-Icon klicken
    Idealerweise kopierst du dann aus der entstandenen Datei nur den relevanten Teil, oder du selektierst statt mit Strg+A nur die relevanten Zeilen im View.

  • Dein View ist also komplett leer und wenn du an dem Spinner etwas einstellen willst, gibts eine Eclipse-Exception?


    Ohne LogCat wird das hier Herumgerate, daher würde ich in dem Fall empfehlen, das Eclipse-Problem zuerst zu lösen, oder Breakpoints im Code zu setzen und den Debugger zu bemühen.

  • Prima, und der Fehler ist also hier:
    MainActivity.onCreate(MainActivity.java:34)


    Das wäre dann: "red.setOnClickListener(new View.OnClickListener() {"
    was wiederum bedeutet, das "red" NULL ist;
    wahrscheinlichste Ursache: im tatsächlich geladenen Layout wird "R.id.button3" nicht gefunden.

  • Wie ich schon am Anfang sagte: wenn dein Layout tatsächlich unter main.xml gespeichert ist, dann ist das nicht das Layout, das du in deiner App am Anfang lädst.


    Ansonsten hilft oft und gerne: Project / Clean...


    Edit: was du in der App siehst, wenn sie nicht abstürzt, ist höchstwahrscheinlich dieses Layout:
    View rootView = inflater.inflate(R.layout.fragment_main, container, false);


    Wenn das zutrifft, dann muss das find... für den Listener auch in diesem Kontext stattfinden.

  • Zitat

    Also nein es ist nicht unter main.xml gespeichert


    Siehe berabeiteten Post;
    was du gezeigt hast wird framgment_main.xml gewesen sein.



    Zitat

    Wie vollführe ich so einen "Clean"?


    Wie oben beschrieben: Project / Clean.. und dann in der Liste dein Projekt wählen und OK klicken.

  • Also ein Clean bringt schonmal rein garnichts...
    Ich verstehe nicht ganz wie du, dass mit dem "Im kontext befinden" meinst, könntest du dies ein wenig näher erleutern?

  • Dein find... Aufruf steht im onCreate der Activity;
    das dort sichtbare Layout wird durch setContentView() definiert;
    im so gesetzten Layout (activity_main) wird sich vermutlich nur ein FrameLayout oder sowas befinden, aber keine Buttons etc.


    Dein Code lädt dann ein Fragment, das wiederum sein eigenes Layout setzt (ersetzt die Fläche, die vom FrameLayout definiert wird);
    darin befinden sich die gewünschten Buttons;
    Wenn du die also mit Listenern ausstatten möchtest, dann musst du das im Fragment machen, und nicht in der Activity;
    der funkionierende Context wäre in deinem Fall rooView.find... nach dem Inflaten des entsprechenden Layouts.


    Verständlich erklärt?

  • Habe ich es so richtig verstanden, ich soll die Deklarierung der Buttons und die Listener in die fragment_main.xml eintragen?


    Dieses?


    Aber wie soll ich das machen? Es gibt doch einen Unterschied zwischen XML und Java =/ wie "schreibe ich das um"?

  • Zitat

    Dieses?


    Nicht raten.
    Das mag dir diesmal eine funktionierende Lösung bescheren, aber beim nächsten mal hagelt es wieder Abstürze.


    -> findViewById(R.id.button3)
    Wo befindet sich button3?
    An welcher Stelle kann das Objekt also gefunden werden?
    Wie stellst du den geeigneten Kontext für findView her?


    Welcher Teil meiner Erklärung war denn unverständlich und warum?

  • Ich denke weniger dass es an deiner Erklärung sondern mehr an meinem fehlendem Wissen/Verständniss liegt....


    Button3 befindet sich in der "fragment_main.xml".
    In der xml
    inwiefern Kontext?


    Muss ich

    Code
    setContentView(R.layout.activity_main);


    zu

    Code
    setContentView(R.layout.fragment_main);


    ändern?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!