Java 如何在 android studio 的 If 语句中编写“if button clicked”?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/32528545/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 12:43:23  来源:igfitidea点击:

How can I write "if button clicked" in an If statement in android studio?

javaandroidif-statementmemory

提问by Ning

I am building a memory game with four cards(2x2). These four cards have an onClick named "cards". This onClick consists of an If statement that flips the cards back if they are not the same, and keeps them if they are the same.

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

The front image of the card is the same for the 4, but the back has different images.My problem is that I want the cards to flip, but they already have an onClick. So how can I write "if button clicked" in an If statement or is there another solution?

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

EDIT:

编辑:

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


    }


}

SECOND METHOD I'M TRYING: @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);

我正在尝试的第二种方法:@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);


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

采纳答案by esevre

So I think you are looking for a way to figure out which ImageButtonthe user clicked. You can get this from the view variable being passed to the onClickmethod.

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

You also need to keep track of which images have been clicked. You can keep track of this by adding a tag to the image.

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

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

Of course you will want to set the tag every time you change the image (and the first time you create the image). So to check if you need a reset, you would need to check that two images have changed away from the default image they started with. You could also do this with global variables, but tags might be a little more intuitive.

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

回答by NeverMind

Try this

尝试这个

     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





                }

            });
}

回答by Bruce Lan

You can reference the Android Dev Doc

您可以参考Android 开发文档

At first, you need to know what is Event Listeners, and implement it. After you did it,and then you can Register the Event Listeners with your implementation.

首先,您需要了解什么是Event Listeners,并实现它。完成后,您可以使用您的实现注册事件侦听器。

Example Code

示例代码

// 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);
    ...
}