android中的if else语句

时间:2013-02-26 18:38:52

标签: android

我是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();
                }
            }

       });




}

}

4 个答案:

答案 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

进行比较