【问题标题】:How can I write "if button clicked" in an If statement in android studio?如何在 android studio 的 If 语句中写“if button clicked”?
【发布时间】:2015-09-11 16:57:18
【问题描述】:

我正在用四张卡片(2x2)构建一个记忆游戏。这四张卡片有一个名为“卡片”的 onClick。这个 onClick 包含一个 If 语句,如果它们不同,则将它们翻转回来,如果它们相同,则保留它们。

卡片的正面图像与4相同,但背面图像不同。我的问题是我希望卡片翻转,但它们已经有一个onClick。那么如何在 If 语句中写“if button clicked”还是有其他解决方案?

编辑:

button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            button1.setVisibility(View.INVISIBLE);
            pic1 = (ImageView) findViewById(R.id.imageView);
            pic2 = (ImageView) findViewById(R.id.imageView2);
            pic3 = (ImageView) findViewById(R.id.imageView3);
            pic4 = (ImageView) findViewById(R.id.imageView4);

            pic1.setImageResource(R.drawable.img1);
            pic2.setImageResource(R.drawable.img1);
            pic3.setImageResource(R.drawable.img1);
            pic4.setImageResource(R.drawable.img1);

            pic1.setVisibility(View.VISIBLE);
            pic2.setVisibility(View.VISIBLE);
            pic3.setVisibility(View.VISIBLE);
            pic4.setVisibility(View.VISIBLE);


        }
    });

}


public void cards(View v) {


    if (v.getId() == pic1.getId() ) {
        pic1.setImageResource(R.drawable.img2);
        pic1.setTag("img2");
    } else if (v.getId() == pic2.getId()) {
        pic2.setImageResource(R.drawable.img2);
        pic2.setTag("img2");
    } else if (v.getId() == pic3.getId()) {
        pic3.setImageResource(R.drawable.img3);
        pic3.setTag("img3");
    } else if (v.getId() == pic4.getId()) {
        pic4.setImageResource(R.drawable.img3);
        pic4.setTag("img3");
    }

    if (R.drawable.img2 == R.drawable.img2) {
        pic1.setImageResource(R.drawable.img2);
        pic1.getTag();
        pic2.setImageResource(R.drawable.img2);
        pic2.getTag();
    }
    if (R.drawable.img3 == R.drawable.img3) {
        pic3.setImageResource(R.drawable.img3);
        pic3.getTag();
        pic4.setImageResource(R.drawable.img3);
        pic4.getTag();

    }
    if (R.drawable.img2 != R.drawable.img2 || R.drawable.img3 != R.drawable.img3) {
        pic1.setImageResource(R.drawable.img1);
        pic2.setImageResource(R.drawable.img1);
        pic3.setImageResource(R.drawable.img1);
        pic4.setImageResource(R.drawable.img1);


    }


}

我尝试的第二种方法:@Override 公共无效 onClick(查看 v){ button1.setVisibility(View.INVISIBLE); pic1 = (ImageView) findViewById(R.id.imageView); pic2 = (ImageView) findViewById(R.id.imageView2); pic3 = (ImageView) findViewById(R.id.imageView3); pic4 = (ImageView) findViewById(R.id.imageView4);

            pic1.setImageResource(R.drawable.img1);
            pic2.setImageResource(R.drawable.img1);
            pic3.setImageResource(R.drawable.img1);
            pic4.setImageResource(R.drawable.img1);

            pic1.setVisibility(View.VISIBLE);
            pic2.setVisibility(View.VISIBLE);
            pic3.setVisibility(View.VISIBLE);
            pic4.setVisibility(View.VISIBLE);


            if (R.drawable.img2 == R.drawable.img2) {
                pic1.setImageResource(R.drawable.img2);

                pic2.setImageResource(R.drawable.img2);

            }
            if (R.drawable.img3 == R.drawable.img3) {
                pic3.setImageResource(R.drawable.img3);

                pic4.setImageResource(R.drawable.img3);


            }
            if (R.drawable.img2 != R.drawable.img2 || R.drawable.img3 != R.drawable.img3) {
                pic1.setImageResource(R.drawable.img1);
                pic2.setImageResource(R.drawable.img1);
                pic3.setImageResource(R.drawable.img1);
                pic4.setImageResource(R.drawable.img1);


            }


        }
    });

}



public void pic1Click(View v){
    pic1.setImageResource(R.drawable.img1);
}
public void pic2Click(View v){
    pic2.setImageResource(R.drawable.img1);
}
public void pic3Click(View v){
    pic3.setImageResource(R.drawable.img2);
}
public void pic4Click(View v){
    pic4.setImageResource(R.drawable.img2);
}

【问题讨论】:

  • 你不能有 card1、card2、card3、card4 onClick's 然后将被点击的 id 发送到 main 函数来完成工作
  • 在您的按钮单击事件监听器中,设置一些布尔变量,以跟踪按钮是否被单击。或者改用自定义复选框。
  • 我的评论(对丑陋的源代码)比较图像(通过 java 中的引用)正式合法,但这是不好的做法,没有表达目标“程序员想要做什么”

标签: java android if-statement memory


【解决方案1】:

所以我认为您正在寻找一种方法来确定用户点击了哪个ImageButton。您可以从传递给onClick 方法的视图变量中获取此信息。

您还需要跟踪点击了哪些图片。您可以通过向图像添加标签来跟踪这一点。

public void myClickMethod(View v){
    if (v.getId() == pic1.getId() ) {
        pic1.setImageResource(R.drawable.img2);
        pic1.addTag("img2");
    } else if (v.getId() == pic2.getId() {
        pic2.setImageResource(R.drawable.img2);
        pic2.addTag("img2");
    } else if (v.getId() == pic3.getId() {
        pic3.setImageResource(R.drawable.img3);
        pic3.addTag("img3");
    } else if (v.getId() == pic4.getId() {
        pic4.setImageResource(R.drawable.img3);
        pic4.addTag("img3");
    } 

当然,您需要在每次更改图像(以及第一次创建图像时)时设置标签。因此,要检查是否需要重置,您需要检查两个图像是否已与它们开始使用的默认图像不同。您也可以使用全局变量执行此操作,但标记可能更直观一些。

【讨论】:

  • 我试过了,你可以在上面编辑的代码中看到它,但我仍然得到相同的结果。结果:当我点击其中一张卡片时,它们全部翻转。如果你愿意,我可以给你发一个项目的 zip,这样你就知道我在说什么了。
  • 确保pic1pic2pic3pic4 都与布局中的正确图像对齐。我也不明白为什么你有一行代码说R.drawable.img2 == R.drawable.img2,这个检查永远是真的,我想你想测试一些不同的东西。
【解决方案2】:

可以参考Android Dev Doc

首先,您需要了解什么是事件监听器,并实现它。 完成后,您可以将事件侦听器注册到您的实现中。

示例代码

// Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickListener() {
    public void onClick(View v) {
      // do something when the button is clicked
    }
};

protected void onCreate(Bundle savedValues) {
    ...
    // Capture our button from layout
    Button button = (Button)findViewById(R.id.corky);
    // Register the onClick listener with the implementation above
    button.setOnClickListener(mCorkyListener);
    ...
}

【讨论】:

    【解决方案3】:

    试试这个

         protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
    
    
            b1 = (Button)findViewById(R.id.button1);
    
            b1.setOnClickListener(new OnClickListener(){
    
                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
    
                    //write your codes here
    
    
    
    
    
                    }
    
                });
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-28
      • 2021-10-13
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多