有 Java 编程相关的问题?

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

java<ToggleButton>onClickListener将drawable更改回默认值

我有一个ToggleButton,它应该可以在打开/关闭时更改其他一些按钮的绘图(和功能)

到目前为止,我只通过使用这段代码使它以一种方式工作

    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    toggle = (ToggleButton) findViewById(R.id.bRedGreen);
    toggle.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            minuskugle = (Button) findViewById(R.id.bBallhole);
            minuskugle.setBackgroundResource(R.drawable.redballinhole);

        }

    });
}

如何在再次单击时将可缩回默认值

<强><<强><<强><<强><<强强><<强><<强><强><强><强><<强><<强><<强><<强><<强><强><强><<强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><强><难难><强><强><难难><强><强><强><难><强><强><强><强><强><难难><强><难难><难><<

这适用于一个条目

但是,如果我添加多个条目,“else”会出现错误

这是有效的:

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            pluskugle = (Button) findViewById(R.id.bBallhole);
            minuskugle = (Button) findViewById(R.id.bBallhole);

            pluskegle = (Button) findViewById(R.id.bKegle);
            minuskegle = (Button) findViewById(R.id.bKegle);

        if(toggle.isChecked())
            minuskugle.setBackgroundResource(R.drawable.redballinhole);
        else
            pluskugle.setBackgroundResource(R.drawable.whiteballhole);

这不是

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            pluskugle = (Button) findViewById(R.id.bBallhole);
            minuskugle = (Button) findViewById(R.id.bBallhole);

            pluskegle = (Button) findViewById(R.id.bKegle);
            minuskegle = (Button) findViewById(R.id.bKegle);

        if(toggle.isChecked())
            minuskugle.setBackgroundResource(R.drawable.redballinhole);
            minuskegle.setBackgroundResource(R.drawable.redkegle);
        else
            pluskugle.setBackgroundResource(R.drawable.whiteballhole);
            pluskegle.setBackgroundResource(R.drawable.redkegle);

共 (2) 个答案

  1. # 1 楼答案

    虚拟解决方案

    在某个地方保留一个布尔值以保存状态

    boolean isPressed = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        toggle = (ToggleButton) findViewById(R.id.bRedGreen);
        toggle.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                minuskugle = (Button) findViewById(R.id.bBallhole);
                if(!isPressed)
                    minuskugle.setBackgroundResource(R.drawable.redballinhole);
                else
                    minuskugle.setBackgroundResource(R.drawable.yourotherdrawable);
                isPressed = !isPressed;
            }
        });
    }
    
  2. # 2 楼答案

    试试这个:

        @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        toggle = (ToggleButton) findViewById(R.id.bRedGreen);
        toggle.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                minuskugle = (Button) findViewById(R.id.bBallhole);
                if(toggle.isChecked())
                   minuskugle.setBackgroundResource(R.drawable.redballinhole);
                else
                   minuskugle.setBackgroundResource(R.drawable.xy);
    
    
            }
    
        });
    }