view.getDrawingCache () solo funciona una vez

Tengo un RelativeLayout con una imagen de mapa de bits cargada utilizando el ejemplo Touch V2 de Pragmatic Bookshelf:http://media.pragprog.com/titles/eband3/code/Touchv2/src/org/example/touch/Touch.java

He agregado un botón separado con onclicklistener que al hacer clic cargará una imagen de la galería. En el resultado de la actividad, la imagen se carga como mapa de bits en el RelativeLayout:

    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();
    }
}

Al hacer clic en el siguiente botón, tomo la imagen de la distribución relativa usando:

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

El proceso funciona de maravilla - para la primera imagen. Cuando vuelvo a cargar otra imagen, el mapa de bits aprobado sigue siendo el mismo que el original. He probado thepicture.invalidate () y thepicture.resetDrawableState () antes de getDrawingCache () pero ninguno parece actualizar la imagen a la imagen recién cargada, aunque el diseño del marco muestra la imagen correcta.

¿Hay algo que no entiendo sobre la actualización de DrawingCache que necesito implementar para la segunda imagen que cargue?

Respuestas a la pregunta(1)

Su respuesta a la pregunta