Button Verlinkung crashes

H

helgrind13

Neues Mitglied
0
Hey,
ich versuche momentan eine Art von Menü zu erstellen, doch dabei geht das immer schief, könntet ihr mir helfen?

Code:
package pu.app;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class startactivity extends Activity{
    
     Button kalender = (Button)findViewById(R.id.kalender);
     Button vertretung = (Button)findViewById(R.id.vertretung);
     Button anfahrt = (Button)findViewById(R.id.anfahrt);
     Button raumplan = (Button)findViewById(R.id.raumplan);
     
     kalender.setOnClickListener(menu);
     vertretung.setOnClickListener(menu);
     anfahrt.setOnClickListener(menu);
     raumplan.setOnClickListener(menu);
    
    public OnClickListener menu = new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            switch (v.getId())
            {
            case R.id.kalender: intent = new Intent(main.this, vertretung.class); break;
            case R.id.vertretung: intent = new Intent(main.this, vertretung.class); break;
            case R.id.anfahrt: intent = new Intent(main.this, raumplan.class); break;
            case R.id.raumplan: intent = new Intent(main.this, raumplan.class); break;
            default: intent = new Intent (main.this, main.class);
            }
            startActivity(intent);
        }
        
    };
    
}


Freue mich über Antworten!
 
An welcher Stelle geht was schief? Was sagt dein Logcat? Fehlermeldung? XML-Datei?
Woher kommt main.this? -> Ins Blaue hinein probier es nur mit "this", da deine Activity nicht main heißt.
 
Zuletzt bearbeitet:
er sagt folgendes:

Multiple markers at this line
- Syntax error on token(s), misplaced construct(s)
- Syntax error on token "menu", VariableDeclaratorId expected after
this token


also soll ich main in meinen activity namen umbennen? Das hilft aber noch nicht viel, weil das Problem ja eher bei folgendem liegt:

kalender.setOnClickListener(menu);
vertretung.setOnClickListener(menu);
anfahrt.setOnClickListener(menu);
raumplan.setOnClickListener(menu);
 
Füge deiner startactivity mal ein onCreate hinzu und darin weißt du erst die OnClicklistener zu..
Code:
@Override
public void onCreate(Bundle savedInstanceState) {
    kalender.setOnClickListener(menu);
    vertretung.setOnClickListener(menu);
    anfahrt.setOnClickListener(menu);
    raumplan.setOnClickListener(menu); 
}
 
  • Danke
Reaktionen: helgrind13
Nun unterstreicht dieser mir zwar keine Errors mehr, doch leider stürzt nun die ganze App ab. Dabei habe ich aber die ganzen neuen Activities hinzugefügt...

Was könnte ich übersehen haben?
 
Ja, du setzt deinen View nicht in onCreate().
Code:
@Override
public void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.my_cool_layout);
    //....
}
 
  • Danke
Reaktionen: helgrind13
Naja doch doch das habe ich noch nachträglich gemacht.

Ich hab nun sogar schon Dummy Activities erstellt für die anderen Activities, die dort verlinkt sind.

Meine Startactivitiy sieht nun wie folgt aus:
Code:
package pu.app;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class GymTriStart extends Activity{
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        kalender.setOnClickListener(menu);
        vertretung.setOnClickListener(menu);
        anfahrt.setOnClickListener(menu);
        raumplan.setOnClickListener(menu); 
    }
    
     Button kalender = (Button)findViewById(R.id.kalender);
     Button vertretung = (Button)findViewById(R.id.vertretung);
     Button anfahrt = (Button)findViewById(R.id.anfahrt);
     Button raumplan = (Button)findViewById(R.id.raumplan);

    
    public OnClickListener menu = new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent;
            switch (v.getId())
            {
            case R.id.kalender: intent = new Intent(GymTriStart.this, kalender.class); break;
            case R.id.vertretung: intent = new Intent(GymTriStart.this, vertretung.class); break;
            case R.id.anfahrt: intent = new Intent(GymTriStart.this, anfahrt.class); break;
            case R.id.raumplan: intent = new Intent(GymTriStart.this, raumplan.class); break;
            default: intent = new Intent (GymTriStart.this, GymTriStart.class);
            }
            startActivity(intent);
        }
        
    };
    
}


des weiteren gibt er folgende Fehlermeldungen aus:

Die Anwendung "..." wurde unerwartet beendet. Versuchen sie es erneut.
Schließen erzwingen.
 
Programmcode gehört in eine Methode.
Variablen definitionen können auch außerhalb stehen.

Button xxx; ist eine Definition. Da rauf willst du überall in der Activity zugreifen also gehört es in die Klasse der Activity.
findViewById ist Programmcode > rein damit in onCreate.
 
  • Danke
Reaktionen: helgrind13
PS. Du könntest "Button xxx;" auch innerhalb von onCreate definieren, dann könntes du aber nur innerhalb von onCreate() darauf zugreifen.
 
Aber ich hab den Programm Code doch in der void-Methode oder nicht?

Könntest du das einmal anhand von meinem Code zeigen, wie du das meinst?
 
Die Methode heißt nicht void sondern onCreate. Void heißt nur das sie keinen Parameter bzw. Wert zurückgibt. onCreate ist mit "}" abgeschlossen. Was danach kommt gehört nicht mehr dazu.

Code:
package pu.app;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class GymTriStart extends Activity{
    // Definieren der Variablen
    Button kalender;
    Button vertretung;
    Button anfahrt;
    Button raumplan;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Initialisieren der Variablen
       kalender = (Button)findViewById(R.id.kalender);
       vertretung = (Button)findViewById(R.id.vertretung);
       anfahrt = (Button)findViewById(R.id.anfahrt);
       raumplan = (Button)findViewById(R.id.raumplan);

        kalender.setOnClickListener(menu);
        vertretung.setOnClickListener(menu);
        anfahrt.setOnClickListener(menu);
        raumplan.setOnClickListener(menu); 
    }
  
    public OnClickListener menu = new OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            Intent intent;
            switch (v.getId())
            {
            case R.id.kalender: intent = new Intent(GymTriStart.this, kalender.class); break;
            case R.id.vertretung: intent = new Intent(GymTriStart.this, vertretung.class); break;
            case R.id.anfahrt: intent = new Intent(GymTriStart.this, anfahrt.class); break;
            case R.id.raumplan: intent = new Intent(GymTriStart.this, raumplan.class); break;
            default: intent = new Intent (GymTriStart.this, GymTriStart.class);
            }
            startActivity(intent);
        }
        
    };
    
}
 
  • Danke
Reaktionen: helgrind13
Vielen Dank für eure ausführliche Antworten! :)

Das einzige Problem ist nur leider noch, dass ich zwei Activities nun schon programmiert habe und wenn ich auf den Button klicke geht auch alles klar, nur leider habe ich noch zwei leer Activities und wenn ich auf diese klicke wird das Programm geschlossen

Code:
Code:
package pu.app;

import android.app.Activity;
import android.os.Bundle;

public class anfahrt extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.anfahrt);
    }
}

Das Layout ist vollkommen simpel gehalten und hat eigentlich auch sonst keine weiterem Funktionen...
 
Hast du die Activitys in der Manifestdatei eingetragen?
 
  • Danke
Reaktionen: helgrind13
jap, das habe ich, aaaaaber ich hab vergessen die zwei leeren dateien hinzuzufügen, oh man bin ich doof.

Vielendank!
 

Ähnliche Themen

A
  • AnimaAngelo85
Antworten
1
Aufrufe
345
swa00
swa00
MES
Antworten
10
Aufrufe
833
MES
MES
C
Antworten
8
Aufrufe
1.133
swa00
swa00
Zurück
Oben Unten