getApplicationContext() in class

A

AquaBall

Fortgeschrittenes Mitglied
2
Ich habe eine Classe, die dynamisch ein ImageView erstellen soll.

Der Code funktioniert in onCreate() einwandfrei,
Code:
        LayoutParams lp = new LayoutParams(
              LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
        image= new ImageView(getApplicationContext());
        image.setImageResource(R.drawable.mypic);
        mainScreen.addView(image,  lp );
In der classe, wo ich das aber brauchen würde, gibts aber keine getApplicationContext().
Was mus ich hier stattdessen machen?

(Außerdem würde ich einen Weg suchen, dass ich mein LinearLayout "mainScreen" nicht aus der Activity übergeben muss, sondern in der classe direkt erkennen kann. Für das ".addView")
 
musst deiner klasse eben den context geben. Wo ist das Problem?

Gesendet von meinem Galaxy Nexus mit der Android-Hilfe.de App
 
Hast ja eh recht. Ich wollte mir nur "schon wieder einen weiteren" Parameter ersparen.

*schäm* Eigentlich irgendwie schizophren: erst alles private machen, und dann zu faul sein, Parameter zu übergeben. :o

Aber vielleicht kannst du mir bei der 2. Frage helfen:
Wie kann ich ein addView() machen, wenn ich nicht genau weiß, welches Layout dahinter liegt?

Momentan behelfe ich mir mit einer ID:
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/main"
und 
mainScreen=(LinearLayout) findViewById(R.id.main);
mainScreen.addView(..)
geht das besser?
Was mach ich wenn's mal kein LinearLayout ist?
 
Du kannst auch direkt die View added und mußt nicht auf LinearLayout casten. Wenn du nichts damit machst außer addView dann brauchste den Cast nicht.

Wenn du rausfinden willst, welches Layout es ist, dann kannst du bestimmt instanceof verwenden. Hab ich zwar noch nicht versucht, aber sollte klappen.

Du könntest auch hingehen und das oberste Element immer als LinearLayout definieren, dann hättest du immer dein LinearLayout.
 

Ähnliche Themen

D
Antworten
23
Aufrufe
2.554
Data2006
D
Horstmann365
Antworten
1
Aufrufe
1.060
jogimuc
J
OnkelLon
Antworten
13
Aufrufe
1.986
OnkelLon
OnkelLon
Zurück
Oben Unten