view.getDrawingCache () funktioniert nur einmal

Ich habe ein RelativeLayout mit einem geladenen Bitmap-Bild anhand des Touch V2-Beispiels von Pragmatic Bookshelf -http://media.pragprog.com/titles/eband3/code/Touchv2/src/org/example/touch/Touch.java

Ich habe eine separate Schaltfläche mit OnClickListener hinzugefügt, die beim Klicken ein Bild aus der Galerie lädt. Beim Aktivitätsergebnis wird das Bild als Bitmap in das RelativeLayout geladen:

    public void getPictureFromFile(Uri targetUri){
    try {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inSampleSize = scale(getContentResolver()
                .openInputStream(targetUri));
        workinprogress = BitmapFactory.decodeStream(
                getContentResolver().openInputStream(targetUri),
                null, options);
        view.setImageBitmap(workinprogress);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
}

Mit einem Klick auf die nächste Schaltfläche greife ich das Bild des Relativ-Layouts auf:

                thepicture.buildDrawingCache(true);
            Bitmap bm = Bitmap.createBitmap(thepicture.getDrawingCache());

Der Prozess funktioniert hervorragend - für das erste Bild. Wenn ich ein anderes Bild erneut lade, stimmt die übergebene Bitmap weiterhin mit dem Original überein. Ich habe vor getDrawingCache () versucht, thepicture.invalidate () und thepicture.resetDrawableState () zu verwenden, aber anscheinend wird das Bild nicht auf das neu geladene Bild aktualisiert, obwohl das Rahmenlayout das richtige Bild anzeigt.

Gibt es etwas, das ich beim Aktualisieren von DrawingCache nicht verstehe und das ich für das zweite Image implementieren muss, das ich lade?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage