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

Erste App - geht nicht

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von wernersbacher, 27.06.2012.

  1. wernersbacher, 27.06.2012 #1
    wernersbacher

    wernersbacher Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    16.04.2011
    Hallo Leute, ich möchte mal ein bisschen rumspielen mit Android und Java, und nunja, es funktioniert soweit alles ganz gut. Wollte jetzt Buttons einbauen, und dazu muss ich ja View.OnClickListener importieren. Schön und gut, mache ich auch, allerdings sagt mir Netbeans, dass es noch importiert werden muss. Ich zeige euch mal den Code:

    Code:
    package me.hello;
    
    import android.view.View.OnClickListener;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.Button;
    
    public class MainActivity extends Activity
    {
        private Button hiButton;
        private Button helloButton; 
        
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
    
            hiButton = (Button)findViewById(R.id.hi_button);
            hiButton.setOnClickListener(this); 
     
            helloButton = (Button)findViewById(R.id.hello_button);
            helloButton.setOnClickListener(this);  
            
            setContentView(R.layout.main);
        }
    }
    
    So, und jetzt meine Fehlermeldung:

    MainActivity.java:20: error: method setOnClickListener in class View cannot be applied to given types;
    helloButton.setOnClickListener(this);
    required: OnClickListener
    found: MainActivity
    reason: actual argument MainActivity cannot be converted to OnClickListener by method invocation conversion

    Irgendwie komm ich mir bisschen verarscht vor, weil ich doch genau das importiert habe, was auch soll.

    Ich hoffe, jemand kann helfen! Danke.
     
  2. Sentenza, 27.06.2012 #2
    Sentenza

    Sentenza Erfahrener Benutzer

    Beiträge:
    224
    Erhaltene Danke:
    65
    Registriert seit:
    15.08.2011
    Es gibt zwei Möglichkeiten: entweder deine Variante mit this, da musst du
    aber noch angeben, dass deine Activity den Listener implementieren soll,
    und ausserdem die Methode schreiben, oder du weist direkt einen neuen
    Listener zu. Hier mal beide Möglichkeiten:
    Wenn man Eclipse benutzt, wird einem dabei auch einiges abgenommen, wie es bei Net Beans ausschaut weiß ich nicht...

    Code:
    package android.test.project;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class TestandroidActivity extends Activity [COLOR=Red]implements OnClickListener[/COLOR] {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            [COLOR=Red]Button HelloButton1 = new Button(this);
            HelloButton1.setOnClickListener(this);[/COLOR]
            
            [COLOR=Blue]Button HelloButton2 = new Button(this);
            HelloButton2.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    //Button 2 gedrück
                    
                }
            });[/COLOR]
        }
    
        [COLOR=Red]@Override
        public void onClick(View v) {
            // Button 1 gedrückt
            
        }[/COLOR]
    }
     
    wernersbacher bedankt sich.
  3. wernersbacher, 27.06.2012 #3
    wernersbacher

    wernersbacher Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    16.04.2011
    Oh, das hat funktioniert. Gut. Nunja, ich hab noch ein paar neue Probleme nun. ich habe also ein Textfeld und man soll ein namen eingeben und abschicken. Falls darin nichts steht soll eine Fehlermeldung kommen:

    Code:
    if (name.length() == 0) {
            new AlertDialog.Builder(this) 
                .setMessage(R.string.error_name_missing)
                .setNeutralButton(R.string.error_ok, null)
                .show();
                return;
            }
    
    Angeblich kann es error_name_missing nicht finden:
    cannot find symbol
    symbol: variable error_name_missing
    location: class me.hello.R.string

    Dabei steht in der strings.xml folgendes:

    Code:
    <string name="error_name_missing">Please enter your name.</string>
    Da kommt noch eine if-Abfrage, bei der dasselbe mit 3 anderen Strings vorkommt. Bei dem Rest passiert das nicht. Alle 3 sind innerhalb von

    Code:
    public void onClick(View v) { //.. }
    aufgerufen.

    ich blicke da leider noch nicht ganz durch,..hoffe auf erneute Hilfe :blushing:

    edit: Das ist alles aus einem Tutorial: http://www.androidpit.de/de/android/wiki/view/Android_Anfänger_Workshop#toc48
    Danke
     
    Zuletzt bearbeitet: 27.06.2012
  4. Tom299, 28.06.2012 #4
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Vielleicht benutzt du die falsche R-Klasse. Du mußt sicherstellen, daß du deine eigene R-Klasse in dem Fall benutzt. Diese liegt im gen-Ordner deine Projektes und da steht auch dein package-Name dabei. Importiere mal diese Klasse, dann sollte es klappen.

    Es gibt nämlich noch die android-interne Klasse android.R, je nach Import wird diese manchmal verwendet.
     
  5. DieGoldeneMitte, 28.06.2012 #5
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Liegt die Datei strings.xml im richtigen Verzeichnis (.../res/values/strings.xml)?
     
  6. wernersbacher, 28.06.2012 #6
    wernersbacher

    wernersbacher Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    16.04.2011
    Ja, die strings.xml Datei liegt im richtigem Verzeichnis...zudem werden an anderer Stelle ja strings dort ausgelesen!
    Ich habe mal ein Screenshot gemacht, da sieht man das auch:
    http://img6.imagebanana.com/img/u7xhj6lp/netbeans.png

    Wie genau importiere ich diese R Klasse denn?
    Danke
     
  7. swordi, 28.06.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    sorry soll jetzt nicht böse klingen, aber bitte versuch deine probleme auch bei google zu suchen.

    für anfänger probleme gibts 100000 einträge. da werden auch deine gelöst.

    java grundlagen helfen meistens auch weiter
     
  8. wernersbacher, 28.06.2012 #8
    wernersbacher

    wernersbacher Threadstarter Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    16.04.2011
    Meinst du, ich habe noch nicht geoogelt? Ich habe leider nichts gefunden, sonst hätte ich mir nicht die Mühe gemacht, mich hier zu registrieren.
     
  9. Chuchip, 29.06.2012 #9
    Chuchip

    Chuchip Neuer Benutzer

    Beiträge:
    5
    Erhaltene Danke:
    0
    Registriert seit:
    26.06.2012

    Auch wenn ich mich jetzt direkt unbeliebt mache:
    Auch ich bin neu hier und Java ist für mich noch komplett neu.
    Mir graut schon davor, dass ich auch ein Anfängerproblem bekomme.

    1. Ist dieses Board nicht an Anfängern interessiert? Ich habe mich doch hier angemeldet um Hilfe zu bekommen, wenn dann auf 100000 Einträge verwiesen wird, frag ich mich, was soll ich dann hier???

    2. Natürlich kann Google in vielen Fällen helfen, aber ich muss auch sagen
    100000 Einträge durch zu schauen, hätte ich keine wirkliche Lust zu.

    3. Wenn es wirklich ein "Anfängerproblem" ist, warum können dann die Experten nicht einfach das Problem aufzeigen und erklären warum, wieso weshalb. Als Anfänger hilft mir das auf alle Fälle eher weiter als durch Google zu springen.

    LG
    Chuchip
     
  10. DieGoldeneMitte, 29.06.2012 #10
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Wenn der Suchende sich die Zeit nehmen würde, auch nur eine der 10000(0) Seiten anzugucken, würde das ja schon reichen.

    Man hat keinen Rechtsanspruch auf Hilfe, auch wenn man sich hier angemeldet hat :D

    Weil sie das schon 100000 mal gemacht haben. Was denkst du, wie diese 100000 Seiten entstanden sind?

    Du redest hier nicht von "helfen", sondern eher von "weniger Arbeit machen".
     
    Zuletzt bearbeitet: 29.06.2012

Diese Seite empfehlen