2010-11-08 10 views
5

Ich muss in der Lage sein, readAsset von außerhalb der Hauptaktivität meiner Anwendung aufrufen. Ich habe von Leuten gehört, die den Kontext herumreichen müssen, aber die Sprache war sehr vage. Kann jemand die Schritte beschreiben, die notwendig sind, um die Fähigkeit hinzuzufügen, readAsset zu einer existierenden Klasse aufzurufen, die nicht die Hauptaktivität ist? Das Erstellen einer öffentlichen Funktion in der Hauptaktivität und das Aufrufen anderer Benutzer, die nicht als der Ort funktionieren, dem ich learnAsset hinzufügen muss, befinden sich in einem separaten Thread.Android So lesen Sie ein Asset von außerhalb der Hauptaktivität

+0

Was ist Ihre Befürchtung, 'Context' an Klassen zu übergeben, die von der Funktionalität abhängen? –

+0

Ich habe keine, aber ich habe kein Beispiel gefunden, was ich tun muss. Ich kann mir vorstellen, dass es einfach ist, aber ich finde nur vage Beschreibungen. Angenommen, ich habe meine Hauptaktivität und eine andere Klasse (in diesem Fall in einem separaten Thread). Was muss ich in der anderen Klasse hinzufügen, damit mir dort meine Assets zur Verfügung stehen. – corbin

Antwort

6
public class NonActivity { 
    public void doStuff(Context c) { 
     //read from assets 
     c.getAssets(); 
     //use assets however 
    } 
} 

Nicht sicher, was Sie fragen, aber vielleicht so etwas? Fügen Sie einfach die vorhandene Klasse hinzu und verwenden Sie den Kontext, um die Assets abzurufen. In Ihrer Tätigkeit nennen das Verfahren wie folgt aus:

public class MyActivity extends Activity { 
    public void OnCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    NonActivity n = new NonActivity(); 
    n.doStuff(this); 
    } 
} 
+0

Das sieht so aus, wonach ich gefragt habe. Ich werde das heute Abend versuchen. Vielen Dank! – corbin

+0

Das war es. Dachte, es wäre einfach. – corbin

+0

Ich bin froh, dass ich helfen konnte :) – danh32

0

Hinweis alle Systemdateizugriffe sollten aus dem Haupt-Thread ausgeführt werden, so sollten Sie sie während onCreate() nicht lesen. Stattdessen sollten Sie einen anderen Thread verwenden, der z. B. von einer AysncTask bereitgestellt wird.

Verwandte Themen