Java 为什么我不能使用;SetImageResource";要更改Android Studio中ImageView使用的可绘制图形?

Java 为什么我不能使用;SetImageResource";要更改Android Studio中ImageView使用的可绘制图形?,java,android,xml,Java,Android,Xml,我正在学习如何为Android开发应用程序,我通过学校课程熟悉Java。目前,我正在开发一个小的TicTacToe应用程序用于锻炼,我试图显示一个十字而不是一个圆圈,但Android Studio无法编译setImageResource`命令,即使在每个该死的在线论坛上都推荐这种方法 我已经尝试过像setsetbackgroundresource这样的方法,但所有这些都没有达到我的目的 Java代码: public void click(View pView){ if(getActiv

我正在学习如何为Android开发应用程序,我通过学校课程熟悉Java。目前,我
正在开发一个小的TicTacToe应用程序用于锻炼,我试图显示一个十字而不是一个圆圈,但Android Studio无法编译
setImageResource`命令,即使在每个该死的在线论坛上都推荐这种方法

我已经尝试过像set
setbackgroundresource
这样的方法,但所有这些都没有达到我的目的

Java代码:

 public void click(View pView){
    if(getActivePlayer()== 1){
        if(s1.getSymbol().equals("cross")){
            pView.setImageResource(R.drawable.circle); //claims cannot Resolve method 'setIMageRecource(int)'
        }
        else{
            pView.setImageResource(R.drawable.cross); //claims cannot Resolve method 'setIMageRecource(int)'
        }
    }
    else if(getActivePlayer()==2){
        if(s2.getSymbol().equals("circle")){
            pView.setImageResource(R.drawable.circle); //claims cannot Resolve method 'setIMageRecource(int)'
        }
        else{
            pView.setImageResource(R.drawable.cross); //claims cannot Resolve method 'setIMageRecource(int)'
        }
    }
    pView.setY(-1000);
    pView.setAlpha(1);
    pView.animate().translationYBy(1000).setDuration(1000);
    if (getActivePlayer() == 1){
        setActivePlayer(2);
        String checker = "aktive player ist gerade" + getActivePlayer();
        Log.i("INfo", checker);
    }
    else{
        setActivePlayer(1);
        String checker = "aktive player ist gerade" + getActivePlayer();
        Log.i("INfo", checker);
    }

}
在XML中:

 <ImageView
            android:id="@+id/field4"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:onClick="click"
            app:srcCompat="@drawable/circle" />

您可以使用ImageView.setImageDrawable(Context impact.getDrawable(mContext,R.drawable.cross))


这里,mContext被全局声明为您的活动引用。

您需要像这样将
视图
转换为
图像视图

((ImageView) pView).setImageResource(R.drawable.cross);

你考虑过拼写正确吗?你找到解决问题的方法了吗?请务必让我们不断更新或接受正确答案。这是一个完美的解决方案,但实际上我仍然不明白为什么不允许我对视图本身进行强制转换…@Aaron您不能直接调用setImageResource,因为您提供了带有
视图的
click
方法
setImageResource
是类
ImageView
的一种方法。您可以将方法的签名更改为
public void click(ImageView pView)
。无论在何处调用此方法,都需要为其提供
ImageView
。同样,当您检索视图
R.id.field4
时,您应该这样做
ImageView pView=(ImageView)view.findViewById(R.id.field4)