Aus Klasse auf Hauptklasse zugreifen

M

Mik

Neues Mitglied
0
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!
 
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)
 
  • Danke
Reaktionen: Mik
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!?
 
  • Danke
Reaktionen: Mik
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.
 
  • Danke
Reaktionen: Mik
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! :)
 
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.
 

Ähnliche Themen

R
  • Robby1950
2
Antworten
23
Aufrufe
1.016
Robby1950
R
M
  • MikelKatzengreis
Antworten
5
Aufrufe
131
swa00
swa00
Zurück
Oben Unten