removeView() funktioniert nicht immer????

  • Hallo,
    ich habe eine MainActivity mit einem IntroView (Logo wird eingeblendet und der View verschwindet langsam), einem Level1View und einem Level2View. Diese Views beinhaltet Bitmaps welche in der OnDraw gemalt werden und in der OnTouchEvent nach Berührungen kontrolliert werden. Level1View und Level2View sind public static, damit andere Klassen darauf zugreifen können (eine andere Idee hatte Ich nicht). Nachdem der IntroView transparent ist (getAlpha = 0), wird MainActivity.layout.removeView(this) im IntroView aufgerufen. Das funktioniert auch super. Wenn ich aber (MainActivity.layout.removeView(this) in dem Level1View verwende bekomme Ich einen Nullpointer, dass Level1View nicht deklariert wurde, das ist aber falsch, da ich in der onCreate den Konstruktiv jeweils aufrufe. Ich blicke da gerade nicht ganz durch, ich hatte auch schon öfters Probleme mit removeView daher bin ich sehr frustriert.
    Ich verwende eine RelativeLayout.


    Hoffentlich erkennt ihr in der MainActivity oder so einen Fehler :)


    Hier der Code der MainActivity:

  • Meines erachtens ist das static dein Problem. Gerade Klassenvariablen einer Activity mache nie static, es ist unnötig und kann zu problemen z.b. in parallelisierung führen.


    Du kannst sowieso nicht einfach über activities hinweg auf views zugreifen. Aber wie es aussieht willst du die Views ja nur in einer anderen View nutzen, da könntest du zwei dinge machen:
    1. Du instanziierst die beiden Views erst in deiner IntroView
    2. Du instanziierst die beiden Views in deiner MainActivity und gibst sie in deine Introview hinein und speicherst sie dort nochmal als klassenvariablen.


    Und du solltest im codecontainer dringlichst einrückung verwenden. :)

  • Ich dachte mir das mit dem static auch, komischerweise ist es ohne static ebenfalls ein Nullpointer? Ich probier es morgen nochmal genauer aus ...


    Die Views müssen static (also quasi global) sein, da Ich von den Views aus (den Leveln) auf die anderen Views aus zugreifen möchte, wenn ich zB. in Level1 in der onDraw level2 verschieben möchte (setX(getX() - 1) oder so).


    Ich hoffe du verstehst was ich meine.

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!