Ändern der Farbe in einer Form in einer Ebenenliste programmgesteuert

Ich versuche programmgesteuert die Farbe der zu ändernselectable_kachel_shape. Hier ist die XML-Datei:

kachel_ticked_style.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >


    <item>
        <shape
            android:id="@+id/selectable_kachel_shape"
            android:shape="rectangle" >
            <stroke
                android:width="5dp"
                android:color="@color/headrbar_color" />
        </shape>
    </item>
    <item>
        <rotate
            android:fromDegrees="45"
            android:pivotX="120%"
            android:pivotY="100%"
            android:toDegrees="45" >
            <shape android:shape="line" >
                <stroke
                    android:width="40dp"
                    android:color="@color/headrbar_color" />
            </shape>
        </rotate>
    </item>
    <item
        android:right="5dp"
        android:top="5dp">
        <bitmap
            android:gravity="top|right"
            android:src="@drawable/selectable_tiles_check" />
    </item>

</layer-list>

Ich rufe in einem Fragment den folgenden Code auf

LayerDrawable layers = (LayerDrawable)  this.getActivity().getResources().getDrawable(R.drawable.kachel_ticked_style);

GradientDrawable shape = (GradientDrawable) (layers.findDrawableByLayerId(R.id.selectable_kachel_shape));
                       shape.setColor(this.getActivity().getResources().getColor(android.R.color.background_dark);

1.Warum erhalte ich eine NullPointerException inshape.setColor?

2.Wie ist es möglich, die Farbe innerhalb einer Form, die sich in einer Ebenenliste befindet, programmgesteuert zu ändern?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage