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

Java 按钮只有在一个接一个地使用时才起作用,java,android,Java,Android,所以我在一个活动中有多个按钮,我只能一个接一个地使用它们。我已经读到我需要对(OnClickListener)部分做些什么,但我不确定做什么或如何做。非常感谢您的帮助。代码如下: import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button

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

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

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

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

点击监听器就是这样——它“监听”点击。例如,创建活动时,只有您的
B3
在侦听,因此所有其他按钮都将忽略您对它们的单击。单击
B3
时,将调用
movetodanceschedulemon()
,然后
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);
    }
}

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

点击监听器就是这样——它“监听”点击。例如,创建活动时,只有您的
B3
在侦听,因此所有其他按钮都将忽略您对它们的单击。单击
B3
时,将调用
movetodanceschedulemon()
,然后
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);
    }
}

我认为这个代码是有用的

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

我认为这个代码是有用的

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

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

  B3.setEnabled(true);
  B4.setEnabled(false);
  B5.setEnabled(false);
然后在单击后启用下一步按钮

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


    }
}

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

  B3.setEnabled(true);
  B4.setEnabled(false);
  B5.setEnabled(false);
然后在单击后启用下一步按钮

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


    }
}

您可以像这样将所有代码放在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();
            }
        });

    }

您可以像这样将所有代码放在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();
            }
        });

    }

您正在按顺序制作与其他按钮相关的按钮。 在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();
                }
            }); 
        }

您正在按顺序制作与其他按钮相关的按钮。 在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();
                }
            }); 
        }

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

第一种方法:类实现

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);
}
第二种方法:私有变量(大块)

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


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

第一种方法:类实现

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);
}
第二种方法:私有变量(大块)

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


你能详细阐述一下你的问题陈述吗?它一个接一个地起作用,因为你一开始没有创建其他按钮列表。您可以在其他按钮侦听器中创建侦听器。你应该在onCreate中编写它们。你能详细说明你的问题陈述吗?它一个接一个地工作,因为你在开始时没有创建其他按钮列表。您可以在其他按钮侦听器中创建侦听器。你应该在onCreate中编写它们。那么,你会将code onClickListener代码行移动到B3的click listener下面吗?你会将所有
setOnClickListener
块(整个块)按你想要的顺序移动到
onCreate
中,只要它们都在
onCreate
中,那么将code-onClickListener代码行移动到B3的click listener下面?您可以将所有
setOnClickListener
块(整个块)按任意顺序移动到
onCreate
中,只要它们都在
onCreate
中,侦听器和按钮声明就应该在一个方法中,我认为这段代码会给出语法错误;侦听器和按钮声明应该在一个方法中,我认为这段代码会给出语法错误。语法错误是因为你没有方法moveToMainResultsMenu();