1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Activity übergreifender Zugriff auf Variable

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MBPower, 10.03.2010.

  1. MBPower, 10.03.2010 #1
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    Daten von Activity A nach B kann an mit putExtra übergeben, aber was kann man machen, wenn ich bei geöffneter Activity B ständig die Daten aus einer Variable aus Activity A ausgeben möchte.
    Wie kann man Activity übergreifend Variable verwenden oder auf TextViews einer anderen Activity zugreifen?
     
  2. swordi, 10.03.2010 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm wieso sollst du auf eine textview in activity A zugreifen müssen?

    wenn du activity B startest, ist A sowieso nicht mehr sichtbar. da kann sich also nichts ändern, somit kannst den wert einfach mit putExtra übergeben
     
  3. MBPower, 10.03.2010 #3
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    Wenn ich in Activity A GPS Daten abrufe und diese in Activity B auch verwenden möchte, dann muss ich doch nicht den kompletten Code auch in Activity B verwenden, oder?
    Activity A wird durch den aufruf von Activity B nicht geschlossen und empfängt weiter Daten, da muss man doch an die Daten kommen können.

    In vb.net konnte man ohne Probleme auf globale variable oder auch auf textfelder einer anderen Form zugreifen. Das muss doch irgendwie auch in Java / Android funktionieren.
     
  4. swordi, 10.03.2010 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    also activity A wird sicher schlafen gelegt wenn du B aufrufst. die empängt dann keine daten mehr. ( onStop wird sicher aufgerufen )
     
  5. TheFlatz|Veit, 10.03.2010 #5
    TheFlatz|Veit

    TheFlatz|Veit Android-Hilfe.de Mitglied

    Beiträge:
    54
    Erhaltene Danke:
    3
    Registriert seit:
    29.09.2009
    kann man die activity nicht in eine art globaler activity-registry (von mir aus eine liste) legen und dann auf die einzelnen elemente zugreifen?
    oder bekommt man dann eine exception wenn die form im hintergrund ist?
     
  6. swordi, 10.03.2010 #6
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich glaub nicht, dass das gehen wird. es gibt ja den activity lifecycle und wenn eine neue activity gestartet wird, dann wird die vorherige gestoppt. deshalb wird sich auch nicht weiterarbeiten, wäre zumindest logisch so

    naja wenn du einfach funktionalität von der ersten activity brauchst, lager es in eine eigene klasse aus und die kannst du auch von activity B aufrufen. eventuell liegt der fehler in der herangehensweise an das problem
     
  7. MBPower, 10.03.2010 #7
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    @swordi
    Ob das eigentlich so ist kann ich nicht beurteilen, aber bei mir ist es hundertprozentig nicht so.
    Activity A arbeitet aber weiter, wenn ich Activity B aufgerufen habe. Es werden die Daten auch weiter verarbeitet. Das ist keine Vermutung, sondern ein Feststellung.
    Ich müsste in Activity B nur Zugriff auf die Daten aus Activity A haben.
     
  8. swordi, 10.03.2010 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja du solltest deinen code am besten kennen.

    hast einen thread gestartet dort? der läuft sicher weiter.
     
  9. MBPower, 10.03.2010 #9
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    Bin Anfänger in der Android Programmierung und möchte gerne noch dazulernen. Activity A läuft weiter, warum auch immer. Bisher bin ich davon ausgegangen, dass das ganz normal ist.

    Hier ein Ausschnitt aus Activity A
    Code:
    LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    LocationProvider provider = lm.getProvider("gps");
                
    GetPreferences();
    lm.requestLocationUpdates("gps", logInterval, 1,locationListener);
    counter = new MyCount(logInterval,1000);
    
    Code:
    private final LocationListener locationListener = new LocationListener() {
            public void onLocationChanged(Location l) 
                 {
                 txtLatitude.setText("" + l.getLatitude());
                 txtLongitude.setText("" + l.getLongitude());
                 }
    
                 public void onProviderDisabled(String provider){}
                 public void onProviderEnabled(String provider) {}
                 public void onStatusChanged(String provider, int status, Bundle extras) {}
    };
    
    Der
    Code:
    Intent testActivity = new Intent(test.this, testActivity.class);
    startActivity(testActivity);
    
    Activity A soll ja auch weiter laufen.
    Das Problem ist der Zugriff von Activity B auf Daten aus Activity A.
    Da muss es doch bis auf putExtra eine weitere Möglichkeit geben, oder?
     
  10. swordi, 10.03.2010 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja dann mach folgendes:

    im listener machst anstelle von settext xxx
    ein
    lat = l.getlatitude()
    lon = l.getlongitude()

    und dann machst 2 static methoden
    getLat()
    und getLon()

    dann kannst ActivityA.getLat() und ActivityA.getLon() aufrufen

    aber ob das besonders schön ist weiß ich net
     
    MBPower bedankt sich.
  11. MBPower, 10.03.2010 #11
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    Danke Dir. Werde ich testen.
    Nur wenn das nicht besonders schön ist, wie würdest Du das denn sonst machen?
    Ich möchte nur zum testen auf Activity B den aktuellen Speed ganz gross anzeigen lassen.
     
  12. swordi, 10.03.2010 #12
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja du liest den speed ein, warum gibst es nicht direkt auf activityA aus?
     
  13. MBPower, 10.03.2010 #13
    MBPower

    MBPower Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    149
    Erhaltene Danke:
    9
    Registriert seit:
    26.02.2010
    Das Layout ist schon wegen Überfüllung geschlossen.
    Aber ich bin gerade erst drauf gekommen. Andere TextViews oder Button auf unsichtbar zu setzten, oder hast Du sonst noch eine gute Idee?
     
  14. swordi, 10.03.2010 #14
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm

    eventuell einen tabhost. dann kannst umschalten zwischen den beiden activities
     
  15. klausa2, 13.03.2010 #15
    klausa2

    klausa2 Fortgeschrittenes Mitglied

    Beiträge:
    298
    Erhaltene Danke:
    20
    Registriert seit:
    08.07.2009
    Es gibt natürlich eine ganz einefache Nethode, variablen Activity-übergreifend zu handeln, ist aber nicht sehr sauber:
    Lege die Variable in der Application an.
    Also: leite Deine eigene Application klasse von Applikation ab. Mit getApplication() bekommst Du aus jeder Activity Zugriff darauf, und somit auch auf Deine Variable, bzw. deren Getter/Setter.
     
  16. Axel, 17.03.2010 #16
    Axel

    Axel Neuer Benutzer

    Beiträge:
    16
    Erhaltene Danke:
    1
    Registriert seit:
    29.01.2010
    Oder aber einen Service schreiben und diesen in den Activities benutzen
     

Diese Seite empfehlen