我是Android的新手,在互联网上找到了一些很好的教程,所以我尝试了一个带有if-else
语句的简单活动。我正在尝试“正确和错误”提示/ Toast
:
Button page1 = (Button) findViewById(R.id.button2);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
final ImageView iv1 = (ImageView) findViewById(R.id.imageView1);
if (iv1.equals(R.drawable.airplane1)) {
Toast.makeText(getApplicationContext(), "Correct",
Toast.LENGTH_SHORT).show();
} else if (iv1.equals(R.drawable.airplane2)) {
Toast.makeText(getApplicationContext(), "Please put an answer",
Toast.LENGTH_SHORT).show();
} else if (iv1.equals(R.drawable.airplane3)){
Toast.makeText(getApplicationContext(), "Wrong",
Toast.LENGTH_SHORT).show();
}
}
});
我不确定我的if-else
声明中有什么问题,但根本没有提示。我尝试删除(iv1.equals(R.drawable.airplane3))
和(iv1.equals(R.drawable.airplane2))
,然后它只显示错误的Toast。我似乎无法正确地提示我。
以下是我班级的完整代码:
public class MainActivity extends Activity {
private static final Random imagerandom = new Random();
private static final Integer[] Imagesnumber =
{ R.drawable.airplane1, R.drawable.airplane2, R.drawable.airplane3, };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Integer a = Imagesnumber[imagerandom.nextInt(Imagesnumber.length)];
final ImageView iv = (ImageView) findViewById(R.id.imageView1);
View nextButton = findViewById(R.id.button1);
nextButton.setOnClickListener(new Button.OnClickListener() {
public void onClick(View V) {
int resource = Imagesnumber[imagerandom.nextInt(Imagesnumber.length)];
iv.setImageResource(resource);
}
});
Button page1 = (Button) findViewById(R.id.button2);
page1.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
final ImageView iv1 = (ImageView) findViewById(R.id.imageView1);
if (iv1.equals(R.drawable.airplane1)) {
Toast.makeText(getApplicationContext(), "Correct",
Toast.LENGTH_SHORT).show();
} else if (iv1.equals(R.drawable.airplane2)) {
Toast.makeText(getApplicationContext(), "Please put an answer",
Toast.LENGTH_SHORT).show();
} else if (iv1.equals(R.drawable.airplane3)){
Toast.makeText(getApplicationContext(), "Wrong",
Toast.LENGTH_SHORT).show();
}
}
});
}
}
答案 0 :(得分:2)
R.drawable.airplane*
是一个int,这意味着你要将一个ImageView对象与一个int进行比较,这是永远不会的。使用iv.getDrawable().equals(getResources().getDrawable(R.drawable.airplane1));
与Drawable对象进行比较。
这可能不是性能方面的最佳选择,您可能希望将显示图像的索引作为类变量进行跟踪,并根据该条目执行条件(或沿着这些行进行处理)。
答案 1 :(得分:2)
iv1.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.airplane1).getConstantState())
答案 2 :(得分:1)
您无法将ImageView的类型与int
的类型进行比较iv1.equals(R.drawable.airplane1)
这是错误的
试试这个
iv.getDrawable()==getResources().getDrawable(R.drawable.airplane1)
代替
答案 3 :(得分:0)
您正在比较ImageView
个实例和int
,检查点击哪个视图的正确方法是:
if (iv1.getId() == R.id......) { ...
这样您就可以将int
与另一个int