Bei eingehender Firebase Data Message ImageView ändern

  • Hallo, ich habe vor kurzem angefangen mit der Androidprogrammierung und momentan hänge ich an einem Problem bei dem ich nicht mehr weiterkomme.


    Folgendes Szenario: Empfängt meine App eine Firebase DataMessage soll das Bild in einem ImageView geändert werden.


    Ich habe eine Messaging_Service.java in der die OnMessageReceived Methode drin ist. In meiner MainActivity.java befindet sich die Methode setAnzeige(String Var1, String Var2) welche das ImageView ändern soll.


    Meine konkrete Frage lautet also: wie bekomme ich einen Aufruf der Methode setAnzeige in der MainActivity.java aus der Messaging_Service.java heraus hin. Ich habe gestern stundenlang versucht Lösungen aus dem Netz zu implementieren doch nichts hat geholfen. Wäre super wenn jemand weiter wüsste.

  • Hey,
    zu erst einmal die Frage, warum alles in der mainActivity? Erstell dir doch eine eigene Klasse. Somit könntest du die Methode public machen und über eine Referenz darauf zugreifen.


    Möchtest du die Methode unbedingt in deiner MainActivity haben, so würde ich es mal versuchen diese statisch zu machen.


    Java
    public static setAnzeige(String Var1, String Var2){
      // ganz viel schöner Qellcode....
    }


    Das sollte so funktionieren. Doch würde ich dir davon abraten und ehr mit einer weiteren Klasse arbeiten.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Ich hatte es zu Beginn versucht das in eine eigene Klasse auszulagern, da habe ich es aber nicht hinbekommen auf die ImageViews zuzugreifen. Bin wirklich noch blutiger Anfänger.


    Wenn ich das so mache:

    Java
    public static void setAnzeige(String Var1, String Var2) {
    
    
    ImageView Anzeige;
    Anzeige = (ImageView)findViewById(R.id.imageView1);
    
    
    }

    gibt es folgendes Problem: non-static method findViewById(int) cannot be referenced from a static context. Damit kann ich leider nix anfangen

  • Es gibt doch nix schöneres als Error Meldungen. :)


    Diese hier sagt aus, dass du ein nicht statisches Element in einer statischen Methode bearbeiten willst.


    Nehmen wir uns doch mal die externe Klasse vor. Du musst dort natürlich ein ImageViews Objekt deklarierten aber NICHT mit new initialisieren. Benutze einen setter um das ImageViews Objekt, dass du in deiner MainActivity erzeugt hast zu übergeben.


    Somit solltest du aus deiner externen Klasse drauf zugreifen können.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

  • Soweit ich das jetzt richtig verstanden habe, müsste das so gehen:


    In deiner MainActivity müsstest du nun deine ImageView erstellen, wie du es auch schon vorher gemacht hast und nach dem erstellen dieser Klasse, ihr auch noch die imageView übergeben.


    Sollte das nicht funktionieren versuche mal das:

    Ich habe das alles jetzt nicht getestet. Daher hoffe ich mal das beste und drücke die Daumen.

    Kann Spuren von persönlicher Meinung, Sarkasmus und Lakritz enthalten. Einzelne Wörter nicht für den Verzehr geeignet. Ungelesen mindestens haltbar bis: suche bei Google

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!