Nach Bildwechsel View/Activity aktualisieren

  • Hallo,


    ich habe eine Funktion changeImage. Wenn ich diese bei der Initialisierung oder über einen Button aufrufe wird auch das neue Bild in der App angezeigt. Wenn ich die Funktion allerdings über eine Handler Message von einer anderen Activity aufrufe wird es nicht aktualisiert. Was kann ich da tun?


    .invalidate(); und .postInvalidate(); sowie .refreshDrawableState(); bleiben ohne Wirkung.

  • Ohne genauere Informationen schwer zu sagen.
    Wo befindet sich diese Funktion? Wie könnte der Handler da ran kommen?
    Entweder arbeiten Du oder Dein Handler auf dem falschen Thread oder die Nachricht kommt aus einem anderen Grund nicht an.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Also in meiner MainActivity habe ich folgenden Code:


    Code
    public final Handler mHandler = new Handler() {			public void handleMessage(Message msg) {					 switch (msg.what) {						 case SET_1:
    						changeImage();
    						break;					 	case SET_2:							 Toast.makeText(getApplicationContext(),"Fall2",Toast.LENGTH_LONG).show();							 break;						 default:				break;			}		}	};



    mit der Funtion:


    Code
    public void changeImage() {					imgView.setImageResource(R.raw.anderesBild);				Toast.makeText(getApplicationContext(),"changeImage",Toast.LENGTH_LONG).show();	}




    In meiner ConnectionActivity habe ich:


    Code
    if (cmplStrIncom.contains("test1")) {			 Message msg = mHandler.obtainMessage(MainActivity.SET_1);			 mHandler.sendMessage(msg);			        					}	
    	 if (cmplStrIncom.contains("test2")) {			 Message msg = mHandler.obtainMessage(MainActivity.SET_2);			 mHandler.sendMessage(msg);



    Die Toast Nachricht erscheint wie gewünscht.


    Edit: Sorry, das zeigt meinen Code sehr unübersichtlich an...

  • Die Frage ist, wo Du Dein Bild geändert haben möchtest. Wenn Deine ConnectionActivity vorn ist, kannst Du hinten rum so viel an den Bildern ändern wollen wie Du willst. Die Activity ist hinten, also dürfte da nicht allzu viel Leistung darauf verschwendet werden dort irgendetwas anzupassen.


    Der Toast hingegen ist ein ganz anderes Prinzip und funktioniert auch activityübergreifend.


    Ich vermute, Du möchtest irgendwelche Bilder aus dem Internet laden und nach erfolgtem Download anzeigen.
    Dafür wäre vermutlich ein passender Loader die bessere Herangehensweise.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Also mit der ConnectionActivity stelle ich eine Verbindung zu einem anderen Gerät her. Anschließend wechsle ich wieder auf die MainActivity. Sobald nun das andere Gerät bspw. "Bild1" sendet soll Bild1 in der MainActivity angezeigt werden. Wenn es "Bild2" sendet entsprechend Bild2 etc. Die Bilder nicht vom Internet sondern bereits im Projektordner.

  • Dennoch nimmt man für derartige Dinge etwas Anderes.
    BroadcastReceiver oder ImageLoader. Jedenfalls nicht über den Handler.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Schwer zu sagen. Normalerweise sollte es möglich sein. Wenn Du sicherstellen kannst, dass Deine Message auf demselben Thread ausgeführt wird.
    Gegebenenfalls solltest Du noch ein Flag in Deiner Activity setzen, dass beim Wechsel dort hin zurück durch den Activity Life Cycle abgeholt wird.
    Ansonsten kann es nämlich durchaus sein, dass beim Aufruf der MainActivity diese auf einen Standardwert zurückgesetzt wird und es daher nur für Dich so aussieht als hätte sich das Bild nicht geändert.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

  • Ich habe nun meine App verändert und auf eine Activity reduziert. Damit funktioniert es.
    Noch ein Problem habe ich. Mit

    Code
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);


    im Code funktioniert das Bild wechseln leider wieder nicht mehr. Woran könnte das liegen?

  • Spontan würde ich darauf tippen:

    Zitat

    Change the desired orientation of this activity. If the activity is currently in the foreground or otherwise impacting the screen orientation, the screen will immediately be changed (possibly causing the activity to be restarted). Otherwise, this will be used the next time the activity is visible.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

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