0

这段代码可能看起来不切实际,但我对其进行了简化,以便更好地理解答案。我得到一个空指针异常,不知道为什么。我的drawable文件夹中有president1.png。对于“president1”,我也试过president1.png。通过 android:onClick="flipCard" 的按钮推送调用方法 flipCard(View v)。有什么建议么?

public void flipCard(View v){
card1.setImageResource(getIdentifier(getBaseContext()));
}


public static int getIdentifier(Context context){
return context.getResources().getIdentifier("president1", "drawable", context.getPackageName());
}

<ImageButton
    android:id="@+id/card1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/card8"
    android:layout_toLeftOf="@+id/card2"
    android:background="@null"
    android:onClick="flipCard"
    android:src="@drawable/facedown" />
4

1 回答 1

1

尝试使用

card1.setImageResource(getIdentifier(v.getContext()));

代替

card1.setImageResource(getIdentifier(getBaseContext()));

这会导致您的代码使用运行视图的上下文。

我相当确定问题实际上出.png在您的文件名中,因为您的应用程序中的任何 Context 都可以访问资源(除非您的调用getBaseContext()是在创建 Activity 上下文之前,在这种情况下它将返回 null)。

于 2013-09-07T04:50:04.163 回答