Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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中的if-else语句_Android - Fatal编程技术网

android中的if-else语句

android中的if-else语句,android,Android,我是Android新手,在互联网上找到了一些不错的教程,所以我尝试了一个简单的活动,上面有一个if-else语句。我正在尝试“正确和错误”提示/吐司: Button page1 = (Button) findViewById(R.id.button2); page1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) {

我是Android新手,在互联网上找到了一些不错的教程,所以我尝试了一个简单的活动,上面有一个
if-else
语句。我正在尝试“正确和错误”提示/
吐司

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))
,但它只显示了错误的土司。我找不到合适的方法来提示我

以下是我的课程的完整代码:

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

       });




}

}

R.drawable.framework*
是一个int,这意味着您正在将ImageView对象与int进行比较,这永远不会是真的。使用
iv.getDrawable().equals(getResources().getDrawable(R.drawable.airplane1))与可绘制对象进行比较


就性能而言,这可能不是最好的选择,您可能希望将显示图像的索引作为类变量进行跟踪,并基于该类变量(或沿着这些行的某项内容)执行条件设置。

您无法将ImageView的类型与int的类型进行比较

iv1.equals(R.drawable.airplane1)
这是错误的

试试这个

iv.getDrawable()==getResources().getDrawable(R.drawable.airplane1)

相反

您正在比较
ImageView
实例和
int
s,检查单击哪个视图的正确方法是:

if (iv1.getId() == R.id......) { ...

通过这种方式,您将一个
int
与另一个
int

进行比较,让我看看我是否正确理解您的意思,您是否试图查看在您的
iv1
中显示的图像?是的,我
m试图使用if-else查看iv1中显示的图像是正确的还是错误的i
m不太确定if-else语句中的错误是什么您缺少else条件。我是指不满足您指定的3个if的条件问题是您正在尝试查看图像视图是否等于可绘制对象的Id,这些是永远不会相等的,因为它们是不同的对象。您可能需要寻找一种方法,从imageview中获取当前可绘制图形,然后查看其等于什么。您正在将整数与imageview进行比较。那不行。R.drawable.airplane1本身并不是一个映像,它是一个作为资源标识符提供服务的int。你好,invertigo我
我尝试了你的建议:“如果(iv1.getDrawable()==getResources().getDrawable(R.drawable.airplane1)){Toast.makeText(getApplicationContext(),“Correct”,Toast.LENGTH_SHORT)。show()}”我仍然错误地使用了这个“if(iv.getDrawable()==getResources().getDrawable(R.drawable.airplane1)){Toast.makeText(getApplicationContext(),“Correct”,Toast.LENGTH_SHORT)。show();}else if(iv.getDrawable()==getResources().getDrawable(R.drawable.airplane2)){Toast.makeText(getApplicationContext(),“请回答”,Toast.LENGTH_SHORT).show();}如果(iv.getDrawable()==getResources().getDrawable(R.drawable.airplane3)){Toast.makeText(getApplicationContext(),“错误”,Toast.LENGTH_SHORT).show()}”现在它一点也不提示任何事情了,我想我的想法是错的codes@NewbieontheSide使用setTag和getTag Comparison,或者对ImageView使用setContentDescription和getContentDescription..我看到了这个链接,但我不知道如何在我的代码中实现它..对不起,我是android/java编程的新手在xml中添加属性android:contentDescription=“airplace”您可以识别的任何名称..为比较提供可绘制的名称,然后在以下情况下进行比较(iv.getConntDescription.equals(“airplace”){//do something}+1让我们知道…它总是这样工作吗?.我已经尝试过了,现在又在思考一个问题,这个问题是加载图像时会加载内存吗?因为我担心我可能会从logcat中的内存错误中得到错误
iv1.getDrawable().getConstantState().equals(getResources().getDrawable(R.drawable.airplane1).getConstantState())