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

intent

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von krackmoe, 08.03.2011.

  1. krackmoe, 08.03.2011 #1
    krackmoe

    krackmoe Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    02.03.2011
    Könnte mir jemand den Unterschied erklären, ich versteh das nicht wenn ich mir das durchlese...

    Code:
    Button startButton = (Button)findViewById(R.id.startButton);
            
            startButton.setOnClickListener(new View.OnClickListener() {			
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent(menu.this, GameActivity.class);
    				startActivity(intent);				
    			}
    		});
    
    Warum muss ich bei new Intent(...) menu.this angeben?
    Und nicht v.getContext()?
     
  2. DieGoldeneMitte, 08.03.2011 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Der Intent braucht einen "Context" als ersten Parameter und keinen OnClickListener, was "this" in deinem Beispiel wäre.

    Das es manchmal doch geht, liegt dann daran, dass die Activity (die ein Context ist) von OnClickListener geerbt hat.

    "menu.this" geht, wenn es in Deinem Scope eine Variable "menu" gibt, die von Context erbt. Vermutlich handlet sich dabei in deinem Fall um die Activity :)
     
    Zuletzt bearbeitet: 08.03.2011
  3. krackmoe, 08.03.2011 #3
    krackmoe

    krackmoe Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    02.03.2011
    Mh...

    Wenn ich aber v.getContext() ihm übergebe, dann bekommt er ja genauso einen Context? Aber dann bekommt er den Context vom OnClickListener, mit dem er dann nichts anzufangen weiß, richtig?

    Wo seh ich, das menu von Context erbt?
    Weil menu meine Klasse ist die Activity extended und Activity von Context erbt, meinst du das?
     
  4. Unicate, 09.03.2011 #4
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ja, das meint er. Hier siehst du das Activity von Context erbt (siehe Klassenpfade oben)
     
  5. krackmoe, 09.03.2011 #5
    krackmoe

    krackmoe Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    02.03.2011
    Ok super danke.

    Nur wie weiß ich, welchen Context ich gerade brauche?
    Wann übergeb ich z.B. den Context vom OnClickListener!?
     
  6. Unicate, 09.03.2011 #6
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Du brauchst immer den Context der Activity welche gerade aktiv ist.

    Bei Services gibt es ja nur einen, nämlich den des Services selbst.
     
  7. Unicate, 09.03.2011 #7
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Also wenn das Stück Code in einer Activity namens MyActivity ist, brauchst du den Context MyActivity.this.getContext() (Wenn du nicht gerade ein interface implementierst reicht auch nur "getContext()"
     
  8. krackmoe, 09.03.2011 #8
    krackmoe

    krackmoe Threadstarter Junior Mitglied

    Beiträge:
    41
    Erhaltene Danke:
    0
    Registriert seit:
    02.03.2011
    Ok d.h. es ist egal ob hier MyActivity.this übergebe oder MyActivity.this.getContext(), da MyActivity eh von Context erbt, richtig?

    Ja und wann würde der vom OnClickListener benötigt werden!?

    Danke dir auf jeden Fall ;)
     
  9. Unicate, 09.03.2011 #9
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ja, das ist richtig.

    Wann man den Context benötigt kommt immer darauf an, was du in deinem implementierten Interface machen möchtest.

    In deinem Fall hier brauchst du Ihn um ein Intent zu erstellen.
     

Diese Seite empfehlen