有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java I有三个开关按钮,如果一个开关按钮处于活动状态,那么其他两个开关按钮应保持不活动或禁用

please Click here to see the problematic image

我是安卓初学者,我需要一些想法来解决我的疑问,我的疑问是当一个开关按钮处于活动状态时,另两个开关按钮应保持不活动或禁用。我们如何执行此活动有人能给我提供任何想法吗。。。?我刚刚插入了开关按钮,我应该如何执行此任务

我只是在安卓编程中使用了相对布局

我的源代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    button=(Button)findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            openThird();
        }
    });
    btnswitch=(Switch)findViewById(R.id.switch1);
    btnswitch=(Switch)findViewById(R.id.switch2);
    btnswitch=(Switch)findViewById(R.id.switch3);
}
public void openThird()
{
    Intent toy=new Intent(this,Third.class);
    startActivity(toy);
}   

引导我度过这一关


共 (1) 个答案

  1. # 1 楼答案

    首先,将三个不同的gui元素(您的Switch)分配给Activity的同一java变量/类属性,这意味着在代码中只能处理最后一个定义

    不要做

    btnswitch = (Switch)findViewById(R.id.switch1);
    btnswitch = (Switch)findViewById(R.id.switch2);
    btnswitch = (Switch)findViewById(R.id.switch3);
    

    相反,为活动提供更多类属性,以分别处理每个Switch

    btnswitchOne = (Switch)findViewById(R.id.switch1);
    btnswitchTwo = (Switch)findViewById(R.id.switch2);
    btnswitchThree = (Switch)findViewById(R.id.switch3);
    

    然后向其添加侦听器(仅第一个示例):

    btnSwitchOne.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            // do your desired action on switch on/off
            if (isChecked) {
                // if the first switch gets checked, uncheck the others
                btnSwitchTwo.setChecked(false);
                btnSwitchThree.setChecked(false);
            } else {
                /* since you are switching them off by code depending on other's state,
                 * either skip the else-block entirely or print some debug messages
                 */
            }
        }
    });