App crasht und ich bekomme es nicht behoben.:(

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);
}
});
}
}
 
"Login.this" schreibt man so eigentlich nicht, eher nur "this"

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.
 
"Login.this" schreibt man so eigentlich nicht, eher nur "this"

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.
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.
 
Was ist 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.
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.

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.
Java:
    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:
Java:
    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 ...
 
@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?
 
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.
 
??? 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
 
Zuletzt bearbeitet:
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?
 
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ß.🙂
 
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.
 
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.🙂
 
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);
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]
 
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]
Wenn du richt gelesen hättest wüsstest du das es nicht an dem Intent lag
 

Zurück
Oben