intent

K

krackmoe

Neues Mitglied
1
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()?
 
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:
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?
 
Ja, das meint er. Hier siehst du das Activity von Context erbt (siehe Klassenpfade oben)
 
Ok super danke.

Nur wie weiß ich, welchen Context ich gerade brauche?
Wann übergeb ich z.B. den Context vom OnClickListener!?
 
Du brauchst immer den Context der Activity welche gerade aktiv ist.

Bei Services gibt es ja nur einen, nämlich den des Services selbst.
 
krackmoe schrieb:
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);                
            }
        });
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()"
 
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 ;)
 
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.
 

Ähnliche Themen

J
  • JoEntwickler
Antworten
8
Aufrufe
1.321
JoEntwickler
J
E
Antworten
1
Aufrufe
812
enrem
E
znieh99
  • znieh99
2
Antworten
24
Aufrufe
2.372
swa00
swa00
Zurück
Oben Unten