简体   繁体   English

android中OnClickListener优先级的问题

[英]problem with OnClickListener priority in android

I have an app with two buttons.我有一个带有两个按钮的应用程序。 I want first one (main button) to be unclickable unless you click second one (controller).我希望第一个(主按钮)不可点击,除非你点击第二个(控制器)。 But it is clickable:但它是可点击的:

public class MainActivity extends AppCompatActivity {
    Button button;
    Button controller;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout screen = findViewById(R.id.mainView);

            button = new Button(this);
            button.setClickable(false);
            screen.addView(button);

            controller = new Button(this);
            screen.addView(controller);

            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    view.setBackgroundColor(Color.RED);
                }
            });
            controller.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    for (int i=0; i<2; i++) {
                        button.setClickable(true);
                    }
                }
            });
    }
}

When I implement OnClickListener only for controller, it works and first button is unclickable.当我只为控制器实现 OnClickListener 时,它可以工作并且第一个按钮不可点击。 But when I implement OnClickListener for main button too, it gets priority and works anyway.但是当我也为主按钮实现 OnClickListener 时,它会获得优先级并且无论如何都能工作。 What can I do?我能做什么?

Behind the scenes, calling setOnClickListener() makes the target clickable.在幕后,调用setOnClickListener()使目标可点击。 You can set clickable to false after setting the click listener.你可以在设置点击监听器后将clickable设置为false。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM