Android ImageView未随setImageResource()更改?
代码如下:Android ImageView未随setImageResource()更改?,android,Android,代码如下: public class MainActivity extends AppCompatActivity implements View.OnClickListener{ ImageView button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
ImageView button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (ImageView)findViewById(R.id.startButton);
button.setOnClickListener(this);
button.setImageResource(R.drawable.play);
}
public void onClick(View v) {
button.setImageResource(R.drawable.pause);
}
}
显然,如果我按下按钮.setImageResource(R.drawable.pause)
在onCreate中工作并更改图像,但在onClick中不工作?我试着调试它,它运行onClick代码,但没有改变按钮图像。我可能犯了一个非常愚蠢的错误,但我想不出来
xml:
您最好将ImageView self设置为ClickListener确保使用
android:src
要在xml中设置初始图像,请尝试以下代码并告诉我结果:
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
ImageView button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (ImageView)findViewById(R.id.startButton);
button.setOnClickListener(this);
button.setImageResource(R.drawable.play);
}
public void onClick(View v) {
button.setImageResource(R.drawable.pause);
}
}
在xml中:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.larry.app.MainActivity"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/startButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true" />
</LinearLayout>
在OnClick中有一个switch语句,当我按下按钮时,setImageResource(R.drawable.pause)代码>在切换之前,即使OnClick激活,它也不总是激活。当我单击一个按钮时,会执行android.os.SystemClock.sleep,这会阻止图像交换。当按下另一个按钮时,时钟不休眠,因此图像可以成功切换 在更改imageView的源代码时,我遇到了Larry在使用setImageResource
方法时遇到的相同问题。对我来说,这是在尝试使用交换机时发生的,但情况不同。如果有人觉得它有用,我将从代码中解释我是如何使用变通方法的
场景
对我来说,我在一个活动中有一个recyclerView,根据选择,它将使用意图启动另一个活动,新活动中的小部件将通过单击recycler视图(包括imageView)进行操作
解决方案
在新类中使用If或开关不起作用(这就是问题所在)。我所做的是在我的recycler视图的自定义适配器中,我使用了一个If条件(同样,开关将不工作),如下所示
具有回收者视图的活动类别
`@凌驾
public void onBindViewHolder(@NonNull MyViewHolder,int位置)
{
holder.indextview.setText(String.valueOf(位置+1));
holder.nameTextView.setText(String.valueOf(name.get(position));
holder.gradeTextView.setText(String.valueOf(grade.get(position))
这里的重要部分是将资源ID作为字符串从putExtra
方法传递
if(novaGroup.get(position).equals(1))
i.putExtra("PRODUCT_NOVA_GROUP", R.drawable.nova_grade_1);
else if(novaGroup.get(position).equals(2))
i.putExtra("PRODUCT_NOVA_GROUP", R.drawable.nova_grade_2);
else if(novaGroup.get(position).equals(3))
i.putExtra("PRODUCT_NOVA_GROUP", R.drawable.nova_grade_3);
else
i.putExtra("PRODUCT_NOVA_GROUP", R.drawable.nova_grade_4);
来自新活动的班级
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_displaying_product_details);
Bundle extras = getIntent().getExtras();
novaGroupImage = findViewById(R.id.novaGroupImage);
novaGroup = extras.getInt("PRODUCT_NOVA_GROUP");
novaGroupImage.setImageResource(novaGroup);
}
这里的重要部分是在onCreate
方法中使用资源ID
Bundle extras = getIntent().getExtras();
novaGroupImage = findViewById(R.id.novaGroupImage);
请展示您的xml。我不认为这是xmlI重做示例中的代码,它工作正常(setImageResource工作)。您没有添加其他内容吗?我实际上不认为还有任何其他内容会影响它。奇怪的是,这个按钮。setImageResource(R.drawable.pause);在onCreate()中工作,但在onClick()中不工作尽管调用了onClick(),但我确信我更改了项目代码以匹配此代码,我认为问题可能是xml中的android:src是永久性的,但这并没有解决它。啊哈,我明白了!我测试了两个代码(你的和我的)在我的简单例子中工作。检查您的项目并根据答案尝试找到解决方案。祝您好运
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_displaying_product_details);
Bundle extras = getIntent().getExtras();
novaGroupImage = findViewById(R.id.novaGroupImage);
novaGroup = extras.getInt("PRODUCT_NOVA_GROUP");
novaGroupImage.setImageResource(novaGroup);
}
Bundle extras = getIntent().getExtras();
novaGroupImage = findViewById(R.id.novaGroupImage);