# App crasht und ich bekomme es nicht behoben.:(



## MaxMustermann1 (2. Sep 2021)

Hey, bei mir im Logcat steht, dass in Zeile 23 ein Fehler auftritt. Leider schaffe ich es nicht diesen zu beheben. Hat jemand von euch eventuell eine Lösung für mich?
Danke im Voraus! 

public class Login extends AppCompatActivity {

    Button callSignUp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_login);

        callSignUp = findViewById(R.id.signup_screen);

        callSignUp.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Login.this,SignUp.class);
            }
        });
    }
}


----------



## LimDul (2. Sep 2021)

Lösung nicht, aber dein Beitrag bietet dafür auch keine Anhaltspunkte, denn

Zeile 23 - dein Code hat keine 23 Zeilen. 
Fehler? Was für ein Fehler tritt auf. Bitte bei sowas immer den konkreten Fehler angeben.


----------



## MaxMustermann1 (2. Sep 2021)

LimDul hat gesagt.:


> Lösung nicht, aber dein Beitrag bietet dafür auch keine Anhaltspunkte, denn
> 
> Zeile 23 - dein Code hat keine 23 Zeilen.
> Fehler? Was für ein Fehler tritt auf. Bitte bei sowas immer den konkreten Fehler angeben.


Der Fehler soll beim "callSignUp.setOnClickListener(new View.OnClickListener() {" liegen.
LG


----------



## xXSkyWalkerXx1 (2. Sep 2021)

"Login.this" schreibt man so eigentlich nicht, eher nur "this"









						Intents and Intent Filters  |  Android Developers
					






					developer.android.com
				



Schau mal im Guide - da steht, dass der 2. Parameter bei deinem Aufruf in der Form _com.example.ExampleActivity _sein muss.
Mit ".class" geht das anscheinend nicht - du musst ".getClass()" verwenden.


----------



## Jw456 (2. Sep 2021)

xXSkyWalkerXx1 hat gesagt.:


> "Login.this" schreibt man so eigentlich nicht, eher nur "this"
> 
> 
> 
> ...


Der Klassenname von der Activity ist ok. Er baucht den Context der Activity. Nicht den Context von den Klicklistener in dem er ist. Deshalb ist das ok a der Stelle.

Nur ein genaue Fehler Beschreibung hat er uns nicht gegeben.


----------



## kneitzel (2. Sep 2021)

xXSkyWalkerXx1 hat gesagt.:


> Was ist
> 
> 
> 
> ...


Also das ist so nicht wirklich verständlich / richtig. Der 2. Parameter sollte eine Class sein. Bei einer Klasse bekommt man diese mit .class (Das Beispiel im Abschnitt "Example explicit intent" zeigt es ja auch explizit so) und die Klasse muss halt für den Kompiler angegeben werden. Das kann mit dem vollen Namen erfolgen oder, wenn die Klasse bekannt ist (weil gleiche Namespace oder per import eingebunden), dann reicht auch einfach der Name der Klasse.



MaxMustermann1 hat gesagt.:


> Der Fehler soll beim "callSignUp.setOnClickListener(new View.OnClickListener() {" liegen.


"Der Fehler" müsste bitte immer im Detail genannt werden. Welcher Fehler kommt genau an welcher Stelle? Und wenn es ein Stacktrace gibt, dann auch bitte den Stacktrace.

Ist es evtl. eine NPE, weil es das Element nicht gibt bzw. nicht gefunden wird?

Ein wichtiger Hinweis: Achte bitte auf die Bezeichner. Ein Button hat die id signup_screen? Bei der id würde ich kein Button erwarten. Evtl. ist also die Id einfach falsch? Es wird wird die id des Buttons innerhalb der Login Activity benötigt, dem Du diesen click listener hinzufügen möchtest.

Und dann auch noch der Hinweis zur Lesbarkeit des Codes: Hier sind entweder eigene Methoden oder Lambda Expressions sehr hilfreich:

Beispiel für eigene Methode mit Nutzung der Methodenreferenz.

```
callSignUp = findViewById(R.id.signup_screen);
    callSignUp.setOnClickListener(this::signupButtonAction);
}

private void signupButtpnAction(View view) {
    Intent intent = new Intent(Login.this,SignUp.class);
}
```

Beispiel mit Lambda Ausdruck:

```
callSignUp = findViewById(R.id.signup_screen);
    callSignUp.setOnClickListener( v -> new Intent(Login.this,SignUp.class); );
}
```

Das mit dem Lambda Ausdruck ist aber so nicht wirklich sinnvoll, denn das Erzeugen des Intents ist ja nicht alles. Damit musst Du ja noch vermutlich irgendwas machen ...


----------



## Jw456 (2. Sep 2021)

kneitzel hat gesagt.:


> Beispiel für eigene Methode mit Nutzung der Methodenreferenz.
> 
> ```
> callSignUp = findViewById(R.id.signup_screen);
> ...


----------



## Jw456 (2. Sep 2021)

@Max.Mustermann 
wie geht es denn nach den Intent weiter?
wie versuchst du ihn zu starten? Das tust du ja nicht. 

Tipp hast du die neue Activity auch im manifest eingetragen.
 Ist das „SignUp“ überhaupt eine Activity?


----------



## kneitzel (2. Sep 2021)

> er will und braucht den listener von "View.OnClickListener()" android   nicht singupBottonActioin



??? Er setzt einen Listener mit setOnClickListener. Diese Methode will ein View.OnClickListener als Parameter. Dieses Interface hat nur eine Methode und damit ist es ein functionales Interface.

==> Es ist unnötig, anonyme innere Klassen zu bauen. Statt dessen kann man sauber mit Methodenreferenzen arbeiten.


----------



## Jw456 (2. Sep 2021)

kneitzel hat gesagt.:


> ??? Er setzt einen Listener mit setOnClickListener. Diese Methode will ein View.OnClickListener als Parameter. Dieses Interface hat nur eine Methode und damit ist es ein functionales Interface.
> 
> ==> Es ist unnötig, anonyme innere Klassen zu bauen. Statt dessen kann man sauber mit Methodenreferenzen arbeiten.


kann man muss mann aber nicht. und der Fehler wird auch nicht daran liegen.


"signupButtonAction" kann ich in der android doku nicht finden


----------



## kneitzel (2. Sep 2021)

Jw456 hat gesagt.:


> kann man muss mann aber nicht. und der Fehler wird auch nicht daran liegen.


Deshalb läuft das auch alles nur unter dem Punkt "Ein wichtiger Hinweis" - Zu möglichen Fehlerursachen habe ich aber zuvor schon einiges geschrieben. Daher frage ich mich gerade, wo Du ein Problem hast?


----------



## MaxMustermann1 (2. Sep 2021)

Hey, erstmal möchte ich mich für die zahlreichen Antworten bedanken @kneitzel @LimDul @xXSkyWalkerXx1 und @Jw456 ! Damit hätte ich nicht gerechnet. Wie @Jw456 sagte, habe ich tatsächlich vergessen die Activity zu starten.  Habe nun "startActivity(intent); *Absatz* finish(); " hinzugefügt. Leider crasht die App immer noch. Bin recht neu in Java. - Ich weiß ich hätte erst die Sprache lernen sollen, wollte es aber per learning and doing versuchen. Wenn ich wüsste, wie ich euch eine genau Fehlerdiagnose zustellen kann, dann würde ich dies gerne tun. 
Lieben Gruß.


----------



## Jw456 (2. Sep 2021)

Dann zeige vielleicht mal dein Layout. Thema ID vom Button.

und die Fehlermeldung der LogCat


----------



## kneitzel (2. Sep 2021)

MaxMustermann1 hat gesagt.:


> Leider crasht die App immer noch


Dazu solltest Du dann etwas im Logcat finden.

Das solltest Du diesbezüglich einmal durchschauen und speziell nach StrackTraces ausschau halten.


----------



## kneitzel (2. Sep 2021)

Ein weiterer guter Weg, einer Exception auf den Grund zu gehen:
Starte die App mit Debugger - also statt dem run befehl das debug nutzen
Und vorher über das Menu "Run" -> "View Breakpoints ..."
In dem Fenster kannst Du dann bei "Exception Breakpoints" und "Java Exception Breakpoints" einstellen, was da passieren soll:
Enabled bedeutet, dass der Debugger die Ausführung anhält, sobald eine Exception geworfen wurde (Unabhängig davon, ob diese im Anschluss gefangen wird oder nicht).
Und es gibt noch einige nützliche Dinge wie dass dies auch direkt im Log vermerkt wird und so. Und man kann es auch noch weiter spezifizieren, damit ggf. nur bestimmte Exception dies auslösen oder dass erst ein anderer Breakpoint erreicht worden sein muss, ehe dies aktiv wird.


----------



## MaxMustermann1 (2. Sep 2021)

Konnte nun den Fehler finden. Der Fehler war einfach nur, dass ich im Layout fälschlicher weise die ID vertauscht habe. Ist mir tatsächlich Einwenig unangenehm. Ich danke euch aber trotzdem vielmals.


----------



## wer112 (13. Sep 2021)

MaxMustermann1 hat gesagt.:


> Hey, bei mir im Logcat steht, dass in Zeile 23 ein Fehler auftritt. Leider schaffe ich es nicht diesen zu beheben. Hat jemand von euch eventuell eine Lösung für mich?
> Danke im Voraus!
> 
> public class Login extends AppCompatActivity {
> ...


Ich benutze dass so, um auf eine andere Seite zu kommen.  Der funktioniert bei mir immer!

Benutze bitte dies:

[CODE lang="java" title="Intent"]callSignUp.setOnClickListener(new View.OnClickListener() {


 @Override
    public void onClick(View v) {
        startActivity(new Intent(Login.this, SignUp.class));
    }
});
[/CODE]


----------



## Jw456 (13. Sep 2021)

wer112 hat gesagt.:


> Ich benutze dass so, um auf eine andere Seite zu kommen.  Der funktioniert bei mir immer!
> 
> Benutze bitte dies:
> 
> ...


Wenn du richt gelesen hättest wüsstest du das es nicht an dem Intent lag


----------

