1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Anmelde Button mit Leben erfüllen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von ForenDaddy, 01.11.2011.

  1. ForenDaddy, 01.11.2011 #1
    ForenDaddy

    ForenDaddy Threadstarter Junior Mitglied

    Beiträge:
    44
    Erhaltene Danke:
    0
    Registriert seit:
    22.06.2011
    Testumgebung: Android v2.2 im Emo-lator (kleines Wortspiel ;-)

    stehe momentan auf dem schlauch.
    ich versuche einem einfachen anmelde button, eine onclick funktion zuzuweisen.
    aber mein progrämmchen stürzt immer wieder ab.
    Fehlermeldung: "The application abc (process fcp.main) has stopped"

    aufbau ist ganz einfach:
    habe mit eclipse eine gui gebastelt, eingabefeld benutzername, eingabefeld passwort und ein anmelde button.
    die gui an sich funktioniert soweit schon mal. ist ja gott sei dank mit dem gui builder recht praktisch.

    bei der onclick funktion streikt aber mein programm.
    klammere ich die innere klasse aus, sehe ich meine gui, nur halt leider ohne funktion. sobald es wie unten steht, geht es schon wieder nicht.
    ich denke ich habe alles nach anleitung gemacht.
    (benutzer ist eine selbst erstellte Klasse)
    hier mal der code der mainactivity:
    Code:
    package fcp.main;
    
    import fcp.Logic.Benutzer;
    import fcp.Logic.FileCopy;
    import fcp.Logic.FCP_System;
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;
    
    public class MainActivity extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            final Benutzer test = new Benutzer();
            test.fahrerNr = "123";
            test.passwort = "456";
            
            final Button anmelden = (Button) findViewById(R.id.buttonAnmelden);
            anmelden.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    // bla bla bla
                }
            });
            setContentView(R.layout.main);
        }
    }
    hier die main.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
    
    
        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="@string/Fahrernr"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    
    
    
    
    
        <EditText
            android:id="@+id/textfieldUsername"
            android:layout_width="600dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />
    
    
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="@string/Passwort"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    
    
    
    
    
    
        <EditText
            android:id="@+id/textfieldPassword"
            android:layout_width="600dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:inputType="textPassword" >
    
            <requestFocus />
        </EditText>
    
    
        <Button
            android:id="@+id/buttonAnmelden"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="@string/Anmelden" />
    
    
    
        <Button
            android:id="@+id/buttonBeenden"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/Beenden" />
    
    </LinearLayout>
     
    Zuletzt bearbeitet: 01.11.2011
  2. ForenDaddy, 01.11.2011 #2
    ForenDaddy

    ForenDaddy Threadstarter Junior Mitglied

    Beiträge:
    44
    Erhaltene Danke:
    0
    Registriert seit:
    22.06.2011
    jetzt habe ich es auch noch mal mit android: onclick versucht.
    das funktioniert ja genauso wenig.
    irgendwie funktionieren viele der grundlagen beispiele überhaupt nicht.
    und das adt plugin ist nicht wirklich eine hilfe.

    ich habe jetzt meinem anmelde button diese zeile geschenkt:
    Code:
    android:onclick="login"
    und diese mehtode dafür definiert:
    Code:
    public void login(View view) {
            switch (view.getId()) {
                case R.id.buttonAnmelden:
                    // test
                    break;
            }
        }
    ausführen verweigert er, weil er onclick als fehler ansieht.
    error: "no resource identifier found for attribute 'onclick' in package 'android'"

    ich frage mich sowieso, wie er die methode login findet, wenn ich nicht die klasse bzw. activity angebe in der sie steht.
    ein clean hat auch nichts gebracht.
     
    Zuletzt bearbeitet: 01.11.2011
  3. Nebukad, 01.11.2011 #3
    Nebukad

    Nebukad Neuer Benutzer

    Beiträge:
    14
    Erhaltene Danke:
    1
    Registriert seit:
    26.04.2011
    Ruf mal zuerst setContentView(R.layout.main) auf, und dann erst den setOnClickListener für den Button.
     
    ForenDaddy bedankt sich.
  4. ForenDaddy, 01.11.2011 #4
    ForenDaddy

    ForenDaddy Threadstarter Junior Mitglied

    Beiträge:
    44
    Erhaltene Danke:
    0
    Registriert seit:
    22.06.2011
    oh mann, das wars.
    ich nehme mal an, er erzeugt die main.xml zur laufzeit.
    und wenn ich dem button "anmelden" vor erzeugung eine funktion zuweise, greif android natürlich ins leere.

    kann mir aber trotzdem jemand verraten, warum onlick dann nicht geht?
    finde es ist eigentlich eine sehr schöne funktion, die mir das innere klassen gerangel ersparen könnte.
     
  5. swordi, 01.11.2011 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ist genau das gleiche

    ruf einfach als erste setContentView auf und alles funktioniert
     
  6. Tom299, 02.11.2011 #6
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    dein onClick geht nicht, weil dein button vermutlich null ist. sowas findet man beim debuggen eigentlich schnell raus ;-)

    wie die anderen schon gesagt haben, entweder setContentView ganz oben benutzen oder halt zuerst inflaten, dann müßte es auch gehen ...
     
  7. ForenDaddy, 02.11.2011 #7
    ForenDaddy

    ForenDaddy Threadstarter Junior Mitglied

    Beiträge:
    44
    Erhaltene Danke:
    0
    Registriert seit:
    22.06.2011
    debuggen geht nicht, weil onclick fehlerhaft ist.

    hier noch mal der button vollständig aus der "main.xml".
    Code:
    <Button
            android:id="@+id/buttonAnmelden"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="@string/Anmelden"
            android:onclick="login" />
    und wie man sehen kann ist onclick falsch geschrieben (onClick = richtig).
    aber da android das einem nicht sagt, tappt man da schön im dunkeln.

    insofern, problem gelöst.
     

Diese Seite empfehlen