2010-11-29 1 views
2

I mein Projekt Ich habe eine Klasse, die in dieser Klasse Zugriff auf Eigenschaften eines Bildes haben soll. Aber ich möchte es nicht durch diese Klasse zeigen. In dieser Klasse möchte ich nur Breite und Höhe des Bildes wissen und einige mathematische Funktionen ausführen, um etwas zurückzugeben.Android: Soll ich Zugriff auf Ressourcen aus meiner eigenen Klasse haben?

Mein Problem ist, ich kann nicht auf Ressourcen zugreifen. wenn ich zum Beispiel schreiben

image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim); 

Er sagt, die Methode GetResources() in undefined für den Typ Stego (stego ist mein Klassennamen).

Bitte sagen Sie mir, was soll ich tun?

public class Stego() 
{ 
    Public Stego(){ 
     image = BitmapFactory.decodeResource(this.getResources(), R.drawable.tasnim); 
     imWidth = image.getWidth(); 
     imHeight = image.getHeight(); 
    } 
} 

Antwort

3

Die getResources() Funktion gehört zur Context Klasse. Also, es sei denn, Ihre Stego Klasse direkt (oder indirekt) erweitert Context, gibt es keine getResources() Funktion zur Verfügung.

Sie müssen also einen Verweis auf den Kontext Ihrer Anwendung übergeben (z. B. im Konstruktor Ihrer Klasse Stego oder ähnlich). Oder wenn Sie nur eine einzige Ressourcen-ID benötigen, ist es einfacher, diese ID einfach weiterzugeben.

Dies zum Beispiel wie folgt aussehen könnte:

public class Stego() 
{ 
    Public Stego(Context myAppContext){ 
     image = BitmapFactory.decodeResource(myAppContext.getResources(), R.drawable.tasnim); 
     imWidth = image.getWidth(); 
     imHeight = image.getHeight(); 
    } 
} 

Von Ihrer Aktivität, die Sie dann eine Instanz Ihrer Stego Klasse wie folgt initialisieren:

Stego stego = new Stego(this); 
+0

Ok, danke. Also, was ist dein Vorschlag? – Hesam

+0

@Hesam: Wie ich in der Antwort gesagt habe, * müssen Sie einen Verweis auf den Kontext Ihrer Anwendung * weitergeben. Ich habe ein kleines Codebeispiel hinzugefügt. – Nailuj

+0

Danke lieber Nailuj, es funktioniert. Danke noch einmal – Hesam

Verwandte Themen