以下是代码:
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);
}
}
显然,如果我将button.setImageResource(R.drawable.pause);
放在onCreate中它可以正常工作并更改图像而不是onClick?我尝试调试它并运行onClick代码,但没有更改按钮图像。我可能犯了一个非常愚蠢的错误,但我无法弄明白。
的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>
答案 0 :(得分:0)
你最好设置ImageView self OnClickListener
答案 1 :(得分:0)
确保使用
android:src
在xml中设置初始图像。
答案 2 :(得分:0)
您可以尝试使用此代码并告诉我结果:
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>
答案 3 :(得分:0)
在OnClick中有一个switch语句,当我在切换之前放置button.setImageResource(R.drawable.pause);
时,即使OnClick激活也不会始终激活。当我单击一个按钮时,会执行android.os.SystemClock.sleep,以防止图像交换。当按下另一个按钮时,时钟不会休眠,因此图像可以成功切换。
答案 4 :(得分:0)
我偶然发现了 Larry 在更改 imageView 源时使用 setImageResource
方法时遇到的同样问题。对我来说,这发生在尝试使用开关但用于不同场景时。如果有人会觉得它有帮助,我将解释我如何从代码中使用解决方法。
场景
对我来说,我在一个活动中有一个 recyclerView 并且根据选择,它将使用 intent 启动另一个活动,新活动中的小部件将是通过单击包括 imageView
的回收器视图进行操作解决方案
在新类中使用 If 或 Switch 不起作用(这是问题所在)。我所做的是在我的回收器视图的自定义适配器中,我使用了一个 If 条件(再次开关不起作用),如下所示,
使用回收器视图的活动类别
`@覆盖 public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { holder.indexTextView.setText(String.valueOf(position + 1)); holder.nameTextView.setText(String.valueOf(name.get(position))); holder.gradeTextView.setText(String.valueOf(grade.get(position)));
holder.itemView.setOnClickListener(v ->
{
Intent i = new Intent(context, DisplayingProductDetails.class);
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 if(novaGroup.get(position).equals(4))
i.putExtra("PRODUCT_NOVA_GROUP", R.drawable.nova_grade_4);
activity.startActivityForResult(i, 1);
});
}`
此处的重要部分是将资源 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);