有 Java 编程相关的问题?

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

java按钮只有在一个接一个地使用时才起作用

所以我在一个活动中有多个按钮,我只能一个接一个地使用它们。我已经读到我需要对(OnClickListener)部分做些什么,但我不确定做什么或如何做。非常感谢您的帮助。代码如下:

import 安卓.content.Intent;
import 安卓.support.v7.app.AppCompatActivity;
import 安卓.os.Bundle;
import 安卓.view.View;
import 安卓.widget.Button;

public class Main2Activity extends AppCompatActivity {

private Button B3;
private Button B4;
private Button B5;

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

    B3 = findViewById(R.id.button3);

    B3.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            moveToDanceScheduleMenu();
        }
    });
}
private void moveToDanceScheduleMenu () {

    Intent intent = new Intent(Main2Activity.this, DanceScheduleMenu.class);
    startActivity(intent);

    B4 = findViewById(R.id.button10);

    B4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            moveToWhatsOn();
        }
    });
}
private void moveToWhatsOn () {

    Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
    startActivity(intent);

    B5 = findViewById(R.id.button11);

    B5.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            moveToMainResultsMenu();
        }
    });
}

编辑:感谢大家此刻的帮助,所以当我回家后,我会测试这些。它们看起来和我读到的非常相似,所以应该有用。。谢谢


共 (6) 个答案

  1. # 1 楼答案

    您正在按顺序设置单击侦听器。如果希望所有按钮都可以随时单击,请将侦听器移动到onCreate()中:

    protected void onCreate() {
        B3.setOnClickListener(){};
        B4.setOnClickListner(){};
        // etc.
    }
    

    点击监听器就是这样——它“监听”点击。例如,您的B3是创建活动时唯一正在侦听的按钮,因此所有其他按钮都将忽略您对它们的单击。单击B3时,将调用moveToDanceScheduleMenu(),并且B4开始侦听

    我希望这能把事情弄清楚一点


    完整代码:

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class Main2Activity extends AppCompatActivity {
        private Button B3;
        private Button B4;
        private Button B5;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            B3 = findViewById(R.id.button3);
            B3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    moveToDanceScheduleMenu();
                }
            });
    
            B4 = findViewById(R.id.button10);
            B4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    moveToWhatsOn();
                }
            });
    
            B5 = findViewById(R.id.button11);
            B5.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    moveToMainResultsMenu();
                }
            });
        }
        private void moveToDanceScheduleMenu () {
            Intent intent = new Intent(Main2Activity.this, DanceScheduleMenu.class);
            startActivity(intent);
        }
    
        private void moveToWhatsOn () {
            Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
            startActivity(intent);
        }
    }
    
  2. # 2 楼答案

    有几种与按钮交互的方式:

    第一种方法:类实现

    public class Main2Activity extends AppCompatActivity implements OnClickListener {
    private Button B3;
    private Button B4;
    private Button B5;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    
    B3 = findViewById(R.id.button3);
    B4 = findViewById(R.id.button10);
    B5 = findViewById(R.id.button11);
    B3.setOnClickListener(this);
    B4.setOnClickListener(this);
    B5.setOnClickListener(this);
    }
    
    public void onClick(View v){
    
     if(v.getId()==B3.getId()){
        moveToDanceScheduleMenu();
      }else if(v.getId()==B4.getId()){
        moveToWhatsOn();
      }else if(v.getId()==B5.getId()){
        moveToMainResultsMenu();
      }
    }
    
    private void moveToDanceScheduleMenu () {
    Intent intent = new Intent(Main2Activity.this,DanceScheduleMenu.class);
    startActivity(intent);
    }
    
    private void moveToWhatsOn () {
    Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
    startActivity(intent);
    }
    

    第二种方法:私有变量(大块)

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    
    findViewById(R.id.button3).setOnClickListener(mGlobal_OnClickListener);
    findViewById(R.id.button10).setOnClickListener(mGlobal_OnClickListener);
    findViewById(R.id.button11).setOnClickListener(mGlobal_OnClickListener);
    
    }
    
    //Global On click listener for all views
    final OnClickListener mGlobal_OnClickListener = new OnClickListener() {
        public void onClick(final View v) {
            switch(v.getId()) {
                case R.id.button3:
                moveToDanceScheduleMenu();                   
                break;
    
                case R.id.button10:
                moveToWhatsOn();                   
                break;
    
                case R.id.button11:
                moveToDanceScheduleMenu();                   
                break;
            }
        }
    };
    
    private void moveToDanceScheduleMenu () {
    Intent intent = new Intent(Main2Activity.this,DanceScheduleMenu.class);
    startActivity(intent);
    }
    
    private void moveToWhatsOn () {
    Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
    startActivity(intent);
    }
    

    第三种方法:在线(小块)

    public class Main2Activity extends AppCompatActivity{
    
    private Button B3;
    private Button B4;
    private Button B5;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    
     B3 = findViewById(R.id.button3);
     B4 = findViewById(R.id.button10);
     B5 = findViewById(R.id.button11);
    
     B3.setOnClickListener( new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         moveToDanceScheduleMenu();
        }
      });
    
     B4.setOnClickListener( new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         moveToWhatsOn();
       }
      });
    
     B5.setOnClickListener( new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         moveToDanceScheduleMenu();
       }
      });
    
    }
    
    private void moveToDanceScheduleMenu () {
    Intent intent = new Intent(Main2Activity.this,DanceScheduleMenu.class);
    startActivity(intent);
    }
    
    private void moveToWhatsOn () {
    Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
    startActivity(intent);
    }
    
  3. # 3 楼答案

    我认为这个代码是有用的

    public class Main2Activity extends AppCompatActivity {
    
    private Button B3;
    private Button B4;
    private Button B5;
    private a=false,b=false;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    
        B3 = findViewById(R.id.button3);
    
        B3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                moveToDanceScheduleMenu();
                 a=true ;
            }
        });
    }
    private void moveToDanceScheduleMenu () {
    
        Intent intent = new Intent(Main2Activity.this, DanceScheduleMenu.class);
        startActivity(intent);
    
    
    }
     B4 = findViewById(R.id.button10);
    
        B4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              if(a==true ){
                moveToWhatsOn();
               } 
            }
        });
    private void moveToWhatsOn () {
    
        Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
        startActivity(intent);
            b=true ;
        B5 = findViewById(R.id.button11);
    }
    
        B5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               if(b==true){
                moveToMainResultsMenu();
    }
            }
        });
    }
    
  4. # 4 楼答案

    您正在按顺序制作与其他按钮相关的按钮。 在oncreate中尝试绑定按钮及其OnclickListners。像这样

    @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main2);
    
                B3 = findViewById(R.id.button3);
                B4 = findViewById(R.id.button10);
                B5 = findViewById(R.id.button11);
    
    
                B3.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
    
                        moveToDanceScheduleMenu();
                    }
                });
    
                B4.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
    
                        moveToWhatsOn();
                    }
                });
    
                B5.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
    
                        moveToMainResultsMenu();
                    }
                }); 
            }
    
  5. # 5 楼答案

    您可以像这样将所有代码放在OnCreate()方法中

    import android.content.Intent;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    
    public class Main2Activity extends AppCompatActivity {
    
        private Button B3;
        private Button B4;
        private Button B5;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            B3 = findViewById(R.id.button3);
            B4 = findViewById(R.id.button10);
            B5 = findViewById(R.id.button11);
    
            B3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Main2Activity.this, DanceScheduleMenu.class);
                    startActivity(intent);
                }
            });
    
            B4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
                    startActivity(intent);
                }
            });
    
            B5.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    moveToMainResultsMenu();
                }
            });
    
        }
    
  6. # 6 楼答案

    如果只想在按下上一个按钮后才使用按钮,则应在onCreate()方法的开头禁用所有下一个按钮,并在以后按下上一个按钮时启用它们

      B3.setEnabled(true);
      B4.setEnabled(false);
      B5.setEnabled(false);
    

    然后在onClick之后启用“下一步”按钮

            B3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    moveToDanceScheduleMenu();
                    B4.setEnabled(true);
                }
            });
    

    至于你的代码

    public class Main2Activity extends AppCompatActivity {
    
        private Button B3;
        private Button B4;
        private Button B5;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
    
            B3 = findViewById(R.id.button3);
            B4 = findViewById(R.id.button10);
            B5 = findViewById(R.id.button11);
    
    
    
            B3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    moveToDanceScheduleMenu();
    
                }
            });
    
    
            B4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    moveToWhatsOn();
                }
            });
    
    
            B5.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    moveToMainResultsMenu();
                }
            });
        }
    
        private void moveToDanceScheduleMenu() {
    
            Intent intent = new Intent(Main2Activity.this, DanceScheduleMenu.class);
            startActivity(intent);
    
    
        }
    
        private void moveToWhatsOn() {
    
            Intent intent = new Intent(Main2Activity.this, WhatsOn.class);
            startActivity(intent);
    
    
        }
    }