Aus Klasse auf Hauptklasse zugreifen

  • 5 Antworten
  • Neuester Beitrag
Diskutiere Aus Klasse auf Hauptklasse zugreifen im Android App Entwicklung im Bereich Betriebssysteme & Apps.
M

Mik

Neues Mitglied
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!
 
D

DerSeppel

Ambitioniertes 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)
 
ramdroid

ramdroid

Stammgast
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!?
 
M

maniac103

Experte
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.
 
M

Mik

Neues Mitglied
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! :)
 
D

DerSeppel

Ambitioniertes 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.
 
Ähnliche Themen - Aus Klasse auf Hauptklasse zugreifen Antworten Datum
3
5