Jetzt kostenlos registrieren. Mitglieder surfen ohne Werbung auf Android-Hilfe.de!
Zurück   Android-Hilfe.de > Android Developer > Android App Entwicklung

Erstellung eines Intents nicht in onCreate() möglich?

Das Thema "Erstellung eines Intents nicht in onCreate() möglich?" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.


Antwort

 

Themen-Optionen Ansicht
Alt 12.10.2011, 18:54   #1 (permalink)
Junior Mitglied

Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
Standard Erstellung eines Intents nicht in onCreate() möglich?

Hallo zusammen,

bin grad ein bisschen verwirrt.
Folgender Code wird mit "Constructor is undefined" verweigert:
Code:
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        registerForContextMenu(findViewById(R.id.bt_showLists));
        setContentView(R.layout.main);
        
        //add the listener for the buttons
        final Button button = (Button) findViewById(R.id.bt_showLists);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                startActivity(new Intent(this, ShowShoppingLists.class));
            }
        });
Jetzt habe ich die startActivity Zeile mal in eine Methode ausgelagert:
Code:
    private void showShoppingListActivity(){
        startActivity(new Intent(this, ShowShoppingLists.class));        
    }
und schon funktioniert es.

Kann mir das einer erklären?

Gruß,
oetzi
oetzi ist offline   Mit Zitat antworten
Alt 12.10.2011, 19:22   #2 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Erstellung eines Intents nicht in onCreate() möglich?

ja weil du im listener this schreibst. das kann natürlich nicht funktionieren
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei swordi für diesen Beitrag:
derDroide (12.10.2011)
Alt 12.10.2011, 20:00   #3 (permalink)
Junior Mitglied

Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
Standard AW: Erstellung eines Intents nicht in onCreate() möglich?

Hi Swordi,

da merke ich doch gerade, dass ich diese Sache mit dem this noch nicht wirklich verstanden habe.
Worauf verweist das genau? Ich hab da nur so grob "auf sich selbst" im Kopf.
Und wofür braucht der Intent diesen Verweis?
oetzi ist offline   Mit Zitat antworten
Alt 12.10.2011, 21:59   #4 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Erstellung eines Intents nicht in onCreate() möglich?

hmm

java grundlagen nochmal studieren.

dein intent benötigt einen Context und du übergibst den context. ein Listener ist kein Context.
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Folgende Benutzer bedanken sich bei swordi für diesen Beitrag:
Neeldarax (13.10.2011), the_alien (12.10.2011)
Alt 13.10.2011, 13:50   #5 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Erstellung eines Intents nicht in onCreate() möglich?

PHP-Code:
    public void onCreate(Bundle savedInstanceState) {
        
super.onCreate(savedInstanceState);         
        
registerForContextMenu(findViewById(R.id.bt_showLists));         
        
setContentView(R.layout.main);                  
        
//add the listener for the buttons         
        
final Button button = (ButtonfindViewById(R.id.bt_showLists);         
        
button.setOnClickListener(new View.OnClickListener() {             
            public 
void onClick(View v) {                 
                
startActivity(new Intent(NameDeinerActivity.thisShowShoppingLists.class));             
                }         
            });
        } 
Das sollte trotzdem gehen!
Unicate ist gerade online   Mit Zitat antworten
Folgender Benutzer bedankt sich bei Unicate für diesen Beitrag:
oetzi (18.10.2011)
Alt 13.10.2011, 13:52   #6 (permalink)
Android Guru

Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
Standard AW: Erstellung eines Intents nicht in onCreate() möglich?

sagt ja niemand, dass es nicht geht.

nur halt muss man es richtig machen.

aber wie genau immer: bevor man den postersteller mal nachdenken lässt, was ihm vielleicht was bringen könnte, kommt immer einer, der den code schon kopierbereit hier reinschreibt.

da hat der ersteller viel davon gelernt ( falls er die änderung überhaupt sieht )
__________________
App Entwicklung
Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD )
swordi ist offline   Mit Zitat antworten
Folgender Benutzer bedankt sich bei swordi für diesen Beitrag:
the_alien (13.10.2011)
Alt 13.10.2011, 13:56   #7 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard AW: Erstellung eines Intents nicht in onCreate() möglich?

Entschuldige swordi! Du hast vollkommen Recht, ich hab's vermasselt, jetzt versuch ich's selbst, da muss ich durch...

Also oetzi:

Wenn du einen neuen Listener implementierst, dann erstellst du im Prinzip eine neue Klasse. D.h. mit dem Schlüsselwort this ist in diesem Moment nicht deine Activity sondern eher deine Klasse welche du eben neu erstellst.
Unicate ist gerade online   Mit Zitat antworten
Folgender Benutzer bedankt sich bei Unicate für diesen Beitrag:
oetzi (18.10.2011)
Alt 18.10.2011, 17:42   #8 (permalink)
Junior Mitglied

Registriert seit: 25.02.2011
Beiträge: 34
Abgegebene Danke: 11
Erhielt 1 Danke für 1 Beitrag
Standard AW: Erstellung eines Intents nicht in onCreate() möglich?

@Unicate: Vielen Dank für die kurze und zielführende Erklärung! Ich hab lediglich übersehen, dass ich mich da ja in einer anonymen Klasse befinde... :-)


@Swordi: Du hast sicherlich nicht komplett Unrecht, aber ein Post wie "ja weil du im listener this schreibst. das kann natürlich nicht funktionieren" ist nicht wirklich hilfreich, wenn man ein Brett vorm Kopf hat.
Ein Hinweis wie: "In dem anonymen Listener verweist this auf den Listener und nicht auf die Activity" (oder so ähnlich) wäre da einfach zielführender gewesen, weil es mir einen konkreteren Hinweis drauf gegeben hätte, woran es liegt.

Zitat:
dein intent benötigt einen Context und du übergibst den context. ein Listener ist kein Context.
Diese Verständisfrage ist allerdings noch offen. Das der Intent einen Context als ersten Übergabeparameter braucht ist klar, aber wofür braucht er den. Das würde mich einfach interessieren.

Gruß
oetzi
oetzi ist offline   Mit Zitat antworten
Alt 18.10.2011, 17:56   #9 (permalink)
Fortgeschrittenes Mitglied

Modell: HTC Desire HD

Registriert seit: 09.08.2010
Beiträge: 345
Abgegebene Danke: 11
Erhielt 40 Danke für 38 Beiträge
Standard

Also eigentlich ist das nebensächlich, aber wenns dich so brennend interessiert,schau doch in die Implementation der Klasse Intent welche auf dem github liegen sollte.

Grüße

Sent from my HTC Desire HD using Tapatalk
Unicate ist gerade online   Mit Zitat antworten
Antwort

Stichworte
-

Themen-Optionen
Ansicht


Ähnliche Themen

Thema Autor Forum Antworten Letzter Beitrag
Internetverbindung eines PCs per USB nutzen möglich? Guhl LG P990 Optimus Speed Forum 9 22.05.2012 16:16
Frage zur Erstellung eines Theme für GO Launcher iPasta Individualisierung 19 20.08.2011 14:49
Remoteserviceproblem: Übergabe eines Datenstroms möglich? domino-bs Android App Entwicklung 1 12.04.2011 12:09
Lutea: Nach Backup-Erstellung Neustart nicht möglich gaRt3n ZTE Blade / Orange San Francisco / Base Lutea Forum 12 12.02.2011 17:53
Debranden eines T-Mob. /VDF/O2 DHD´s nicht möglich? r0n1N Root / Hacking / Modding für HTC Desire HD 18 23.12.2010 20:15




Du liest gerade: "Erstellung eines Intents nicht in onCreate() möglich?" unter "Android App Entwicklung" auf Android-Hilfe.de.


Powered by vBulletin®
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
© Android-Hilfe.de 2012 - All rights reserved.