2016-05-15 8 views
2

Ich frage mich, ob es möglich ist, ein Bild in einer statischen Variable zu referenzieren? Ich versuche, ein Einkaufswagen-Beispiel zu ändern, das ich habe, aber ich habe Probleme, ein Bild zu der vorhandenen Liste von Elementen hinzuzufügen. Ich bin mir nicht sicher, ob ich die Frage richtig bin gefragt, jedoch kann es besser sein, wenn ich mit Beispielen versuchen, so hier geht ...Wie deklariere ich ein Bild in einem statischen Kontext in Android?

Ich habe ein Image erklärt sich wie folgt:

public static ImageView imgView = (ImageView)findViewById(R.id.ivProductImage); 

ich legte dann ein Bild auf die Imageview wie folgt:

imgView.setImageResource(R.drawable.bg); 

der Grund, warum ich brauche es statisch haben, ist, weil ich es erfordern in einer statischen variablen aufgerufen werden, wie folgt:

public static final Product PRODUCT1 = new Product(1, imgView, "Product Name", BigDecimal.valueOf(4.00), "Product Description"); 

Ich möchte wirklich nur ein Bild für jede Produktvariable hinzufügen. Also gibt es eine einfachere Methode, wo ich einfach ein Bild platzieren kann, wo ich imgView in der statischen Variablen Product habe?

Ich bin mir nicht sicher, ob es eine effizientere Methode als das, was ich oben angegeben habe, aber ich hoffe, dass Sie ein wenig Licht auf dieses Licht bringen :) Vielen Dank für das Lesen, und ich freue mich auf Ihre Hilfe und Führung.

Antwort

2

Ich habe ein Image erklärt sich wie folgt:

, dass zwei Probleme:

  1. Es wird entweder Absturz (höchstwahrscheinlich) oder möglicherweise null zurückzukehren.

  2. Speicherverlust.

Sie nicht findViewById() erst nach setContentView() wurde (oder die Ansicht, die Sie sonst erstellt wurde finden wir am) genannt aufrufen können. Dies kann nicht von statischen Initialisierern aus erfolgen. In der Regel erfolgt dies in onCreate() der Aktivität.

Halten auf eine ImageView in einem static Feld wiederum hält auf die gesamte Activity und alles andere die Activity Referenzen. Sobald der Benutzer den Bildschirm dreht, die Größe des Fensters ändert oder auf andere Weise eine Konfigurationsänderung verursacht, ist Ihr ImageView nicht mehr gültig. Eine neue Activity Instanz wird erstellt, aber Ihre staticImageView wird für die alte Activity sein.

Der Grund, warum ich brauche, ist es statisch haben, weil ich es erfordern in einer statischen Variablen aufgerufen werden, wie folgt:

Sie sich von diesem static Feld los und Ihr Problem auf andere Weise lösen .

+0

Okay, gut ... was ich wirklich erreichen möchte, ist, nur ein Bild zu platzieren, wo mein Bild in der statischen Variable benötigt wird. Ist das möglich? Zum Beispiel: public static final Produkt PRODUCT1 = neues Produkt (1, R.drawable.bg, "Produktname", BigDecimal.valueOf (4.00), "Produktbeschreibung"); –

+1

@PaulSamaroo: "wo mein imgview in der statischen Variable erforderlich ist" - Ich garantiere Ihnen, dass es nicht erforderlich ist, "statisch" zu sein. Vielleicht möchten Sie eine separate Stack-Overflow-Frage stellen, bei der Sie fragen, wie Sie Ihr eigentliches Problem am besten lösen können. – CommonsWare