1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Mik, 27.03.2011 #1
    Mik

    Mik Threadstarter Neuer Benutzer

    Hallo

    bei meiner App habe ich die "ganz normale" Subklasse der Activity in der .java Datei mit einem Label, in Kurzform:

    Code:
    public class meineApp extends Activity {
    
     public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
    final TextView Anzeige = (TextView) findViewById(R.id.label);
    }
    
    Jetzt möchte ich einen CountDownTimer starten und die verbleibende Zeit auf dem Label anzeigen. Dazu brauche ich eine weitere Klasse, da CountDownTimer eine abstrakte Klasse in Java ist:

    Code:
    class MeinCountDownTimer extends CountDownTimer {
    
        public MeinCountDownTimer(long millisInFuture, long countDownInterval) {
            super(millisInFuture, countDownInterval);
            // TODO Auto-generated constructor stub
        }
    
        @Override
        public void onFinish() {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void onTick(long millisUntilFinished) {
        }
        
        
    }
    
    In der onTick Prozedur möchte ich jetzt die verbleibende Zeit auf dem Label anzeigen. Und das ist genau mein Problem: Wie greife ich auf das Label zu? Denn die Klasse MeinCountDownTimer kennt das Label "Anzeige" natürlich nicht, sprich

    Code:
    public void onTick(long millisUntilFinished) {
        Anzeige.setText(milisUntilFinished);
    }
    
    funktioniert aus diesem Grund nicht.

    Bin für für jede Hilfe dankbar. Ich rätsele da schon so lange dran rum... :-(

    Viele Grüße!
     
  2. DerSeppel, 27.03.2011 #2
    DerSeppel

    DerSeppel Android-Hilfe.de Mitglied

    Ich habs grade nicht im Kopf und auch meine Entwicklungsumgebung nicht parat, aber versuch mal über das application objekt drauf zuzugreifen. Immerhin ist deine "Anzeige" doch ein Objekt der Anwendung. (ggf. public setzen)
     
    Mik gefällt das.
  3. ramdroid, 27.03.2011 #3
    ramdroid

    ramdroid Android-Experte

    sonst kannst du in den MeinCountDownTimer eine Funktion setParent() oder so einbauen und dort die activity übergeben. weiß aber nicht ob das auch die elganteste Lösung ist!?
     
    Mik gefällt das.
  4. maniac103, 27.03.2011 #4
    maniac103

    maniac103 Android-Lexikon

    Die eleganteste Lösung wäre IMHO Anzeige als Klassenvariable anzulegen und MeinCountDownTimer als private Klasse innerhalb von meineApp anzulegen. Dann hat MeinCountDownTimer Zugriff auf die Klassenvariablen von meineApp.
     
    Mik gefällt das.
  5. Mik, 27.03.2011 #5
    Mik

    Mik Threadstarter Neuer Benutzer

    Hallo,

    vielen Dank für eure Vorschläge! Habe es jetzt wie von maniac103 vorgeschlagen gemacht, weil mir das am einfachsten erschien. Wusste gar nicht, dass man Steuerelemente als Klassenvariablen deklarieren kann. Ich dachte, die gehören immer als final in die onCreate-Prozedur. Ob das jetzt besonders elegant ist, kann ich nicht einschätzen, aber auf jeden Fall funktioniert es! Daher besten Dank! :)
     
  6. DerSeppel, 27.03.2011 #6
    DerSeppel

    DerSeppel Android-Hilfe.de Mitglied

    Du kannst deiner Klasse auch einen Getter hinzufügen über den deine App dann den Wert bekommt. Wäre m.E. nach ein bisschen eleganter.
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Eine Klasse um das aufrufen anderer Intents zu regeln Android App Entwicklung 24.05.2017
[ERLEDIGT] Tipps für AsyncTask Klasse Android App Entwicklung 18.05.2017
[ERLEDIGT] In SQLite DB auf nächsten/vorherigen Datensatz zugreifen Android App Entwicklung 23.03.2017
[ERLEDIGT] Popup mit Fragment realisieren oder besser eine andere Klasse nehmen? Android App Entwicklung 22.03.2017
Du betrachtest das Thema "Aus Klasse auf Hauptklasse zugreifen" im Forum "Android App Entwicklung",