Erste App - geht nicht

W

wernersbacher

Neues Mitglied
0
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.
 
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]
}
 
  • Danke
Reaktionen: wernersbacher
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:
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.
 
Liegt die Datei strings.xml im richtigen Verzeichnis (.../res/values/strings.xml)?
 
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
 
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
 
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.
 
swordi schrieb:
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


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
 
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.
Wenn der Suchende sich die Zeit nehmen würde, auch nur eine der 10000(0) Seiten anzugucken, würde das ja schon reichen.

1. Ist dieses Board nicht an Anfängern interessiert? Ich habe mich doch hier angemeldet um Hilfe zu bekommen,
Man hat keinen Rechtsanspruch auf Hilfe, auch wenn man sich hier angemeldet hat :D

3. Wenn es wirklich ein "Anfängerproblem" ist, warum können dann die Experten nicht einfach das Problem aufzeigen und erklären warum,
Weil sie das schon 100000 mal gemacht haben. Was denkst du, wie diese 100000 Seiten entstanden sind?

...Als Anfänger hilft mir das auf alle Fälle eher weiter
Du redest hier nicht von "helfen", sondern eher von "weniger Arbeit machen".
 
Zuletzt bearbeitet:

Ähnliche Themen

U
  • unerfahrenerAppEntwickler
Antworten
3
Aufrufe
702
swa00
swa00
Manny87
  • Manny87
Antworten
11
Aufrufe
161
swa00
swa00
5
Antworten
22
Aufrufe
1.417
590239
5
Zurück
Oben Unten