view.getDrawingCache () só funciona uma vez

Eu tenho um RelativeLayout com uma imagem de bitmap carregada usando o exemplo do Touch V2 da Pragmatic Bookshelf -http://media.pragprog.com/titles/eband3/code/Touchv2/src/org/example/touch/Touch.java

Eu adicionei um botão separado com onclicklistener que, quando clicado, carregará uma imagem da galeria. No resultado da atividade, a imagem é carregada como um bitmap no 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();
    }
}

Um clique no botão seguinte, eu pego a imagem do relativelayout usando:

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

O processo funciona muito bem - para a primeira imagem. Quando eu carrego outra imagem novamente, o bitmap passado ainda é o mesmo que o original. Eu tentei o thepicture.invalidate () e thepicture.resetDrawableState () antes de getDrawingCache (), mas nenhum parece atualizar a imagem para a imagem recém-carregada, embora o layout do quadro exibe a imagem correta.

Existe algo que eu não entendo sobre a atualização do drawingCache que preciso implementar para a segunda imagem que carrego?

questionAnswers(1)

yourAnswerToTheQuestion