Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用setImageResource()不更改imageView中的图像背景_Android_Android Imageview - Fatal编程技术网

Android 使用setImageResource()不更改imageView中的图像背景

Android 使用setImageResource()不更改imageView中的图像背景,android,android-imageview,Android,Android Imageview,我正在尝试更改调用活动中单选按钮上不同选项的ImageView的背景图像。调用活动将捆绑中的参数传递给渲染活动,并且我正在正确地接收参数(在单选按钮上进行选择后,我在渲染活动中获得Curve1和Curve2作为参数)。但是我无法通过setImageResource()或setBackgroundResource()更改图像背景。 下面是这样做的代码片段: 渲染活动 private void validateImage() { wave = (ImageView) findVi

我正在尝试更改调用活动中单选按钮上不同选项的ImageView的背景图像。调用活动将捆绑中的参数传递给渲染活动,并且我正在正确地接收参数(在单选按钮上进行选择后,我在渲染活动中获得Curve1和Curve2作为参数)。但是我无法通过setImageResource()或setBackgroundResource()更改图像背景。 下面是这样做的代码片段:

渲染活动

private void validateImage()
    {       wave = (ImageView) findViewById(R.id.image_wave);
            switch (extras.getString("Curve"))
            {
                    case "Curve1":
                            wave.setB (R.drawable.sinewave1);
                            break;
                    case "Curve2":
                            wave.setImageResource(R.drawable.sinewave2);
                            break;
            }
     }
activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"      
android:layout_width="match_parent"
android:layout_height="match_parent"     
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"           
tools:context="shantanu.concussion.usu.concussiontest.TestActivity">


<ImageView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/image_wave"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />

有人能告诉我我错过了什么吗?
谢谢:-)

尝试手动调用invalidate。猛烈地改变最少的东西。您需要了解问题所在(视图选择错误,视图未更改),例如,尝试更改另一个属性

可能导致资源中的错误。(例如,它是透明的)

检查分支开关的入口。(比较可能有误)

通过编辑器更改属性。也许有什么东西阻止了背景的显示


这只是一个愚蠢的错误。

尝试手动调用invalidate。猛烈地改变最少的东西。您需要了解问题所在(视图选择错误,视图未更改),例如,尝试更改另一个属性

可能导致资源中的错误。(例如,它是透明的)

检查分支开关的入口。(比较可能有误)

通过编辑器更改属性。也许有什么东西阻止了背景的显示

这只是一个愚蠢的错误。

试试看

wave.setImageDrawable(getResources().getDrawable(R.drawable.sinewave2));
试一试


参考哪一个对您的问题有用我在更改图像背景后尝试使用invalidate(),没有帮助,我正在UI线程上执行此操作,因此,重新绘制请求应选择invalidate。参考哪一个对您的问题有用我在更改图像背景后尝试使用invalidate(),没有帮助,我正在UI线程上执行此操作,因此,对于重画请求,应选择invalidate。我做了一些类似的手动调试,但没有帮助。它肯定会进入切换状态,并且两个图像都会手动进行精细渲染。但它并不是在执行setImageResources()或setBackgroundResources()时设置映像。所以可能是我没有正确地进行方法调用。方法调用被准确地调用了吗?你试过打电话吗?你能解释一下吗?可能我没听清你的意思。受保护的void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);wave.setBackgroundResource(R.drawable.sinewave1);}尝试过,没有帮助。当然,执行是在开关箱中进行的,我试着在开关箱中记录一些信息,效果很好。我做了一些手动调试,但没有起到任何作用。它肯定会进入切换状态,并且两个图像都会手动进行精细渲染。但它并不是在执行setImageResources()或setBackgroundResources()时设置映像。所以可能是我没有正确地进行方法调用。方法调用被准确地调用了吗?你试过打电话吗?你能解释一下吗?可能我没听清你的意思。受保护的void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);wave.setBackgroundResource(R.drawable.sinewave1);}尝试过,没有帮助。当然,执行是在开关案例中进行的,我尝试在开关案例中记录一些信息,效果很好。getDrawable在API22中不推荐使用,并且它不会刷新图像。我也尝试了一些与更改背景属性相关的其他方法,但都没有帮助。仍在寻找解决方案。请使用:ContextCompat.getDrawable(Context.Drawable ID)getDrawable在API22中不推荐使用,并且不会刷新图像。我也尝试了一些与更改背景属性相关的其他方法,但都没有帮助。仍在寻找解决方案。请使用:ContextCompat.getDrawable(Context.Drawable ID)