xml-datei aus anderer klasse laden

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • xml-datei aus anderer klasse laden

    hallo,
    ich habe viele xml-dateien mit meinen daten, um sie nicht immer wieder in der activity abfragen zu müssen wollte ich sie aus einer eigenen klasse lesen...

    Quellcode

    1. public class getZone extends Activity {
    2. public getZone() {
    3. }
    4. public String[] getZone(String zone) {
    5. String[] werte = new String[0];
    6. if (zone.equals("Kalymnos")) werte = getResources().getStringArray(R.array.routen_Kalymnos);
    7. else if (zone.equals("Gardasee")) werte = getResources().getStringArray(R.array.routen_Gardasee);
    8. ..... viele mehr
    9. return werte;
    10. }
    11. }
    Alles anzeigen
    anstelle von wie immer:
    String[] werte = getResources().getStringArray(R.array.routen_Kalymnos);

    wollte ich nun so darauf zugreifen:
    getZone get = new getZone();
    String[] werte = get.getZone("Kalymnos");es funktioniert nicht

    dank euch
    Tino
  • Hallo so wie du das machst geht das nicht.

    Die Klasse braucht nicht von Activity zu erben. Das bringt dir auch nichts.
    Das was du da erbst ist auch die falsche Instanz.

    Du musst den Kontext der Actiyity an die Klasse übergeben.
    Über diesen Kontext kannst du in der Klasse auf Objekte der Activity zu greifen.
    Übergebe den Kontext im Konstruktor an die Klasse.

    Erben brauch die Klasse nicht.

    Grundlagen OOP . Auslagern in externe Klassen.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von nono124 ()

  • hallo,

    das "extends Activity" habe ich nur gemacht, da sonst das "(R.array.routen_Kalymnos)" nicht gefunden wurde.

    ich möchte doch nur hier einen String reingeben, in dem fall "Kalymnos" und somit auf die richtige xml zugreifen zu können.


    wenn ich die ca. 20 abfragen direkt in die activity schreibe geht es ja gut, ich habe aber 5 activities und müsste alle immer erweitern wenn neue xml dazukommen, deswegen wollte ich sie so auslagern.


    in java-eclipse projekten mache ich das auch so und es geht immer.

    ich versteh nicht was du mit kontext meinst.


    danke tino
  • Der Kontext ist zb das tihs der activity. Das du in der Klasse brauchst um auf die resoursen der activity zu zugreifen. Beim Instanzen der Klasse mit New solltest du den context mit übergeben.

    In der Klasse
    Context context;
    public getZone(Context cx) {
    context = cx;}

    werte = context . getResources().getStringArray(R.array.routen_Gardasee);

    In der activity

    getZone get = new getZone( this);

    developer.android.com/reference/android/content/Context


    Zeige mal wie du das im Java für Desktop machst.

    Android ist ein framework
    Ein Feedback auf Tipps ist auch schön. :P
  • hallo,

    danke, mit dem übergeben des context, hier "this" hat das ganze funktioniert, auch ohne das ich die klasse mit activity oder sowas extende....
    jetzt is es eine ganz normale klasse wie in java bei meinen projekten auch, die einen string bekommt, die passende xml-datei sucht und als string[] zurückgibt.

    so muss ich nur die erweitern und kann sie in beliebig vielen activities nutzen.

    du hast mir mit deinem code-beispiel echt geholfen,
    danke Tino

    hiermit für mich beendet