Java Button.setOnClickListener不';我根本不工作
我正在为Android编程一个节拍器,并使用一个线程在用户说的节奏中播放声音,但不知何故,我的Java Button.setOnClickListener不';我根本不工作,java,android,Java,Android,我正在为Android编程一个节拍器,并使用一个线程在用户说的节奏中播放声音,但不知何故,我的setOnClickListener无法工作。按钮在单击时甚至没有单击。我的代码有什么问题 startb = (Button) findViewById(R.id.start_but); stopb = (Button) findViewById(R.id.stop_but); startb.setOnClickListener(new View.OnClickListener
setOnClickListener
无法工作。按钮在单击时甚至没有单击。我的代码有什么问题
startb = (Button) findViewById(R.id.start_but);
stopb = (Button) findViewById(R.id.stop_but);
startb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
running = true;
bpm_val = findViewById(R.id.metr_input);
value = bpm_val.getText().toString();
int beat = Integer.parseInt(value);
Soundplay(beat / 60); //The beats per second
}
});
stopb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
running = false;
}
});
}
public void Soundplay(final long bps) {
startb = (Button) findViewById(R.id.start_but);
stopb = (Button) findViewById(R.id.stop_but);
running = true;
new Thread() {
@Override
public void run() {
super.run();
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.metronome_klack);
int i = 0;
while (running) {
if(i == 1000) {
mp.start();
i = 0;
}
try {
sleep(bps);
i++;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
}
}
您已经在代码中初始化了按钮两次。 第一次使用onCreate()方法,第二次使用声音播放(最终长bps)方法。您可以从Soundplay方法中删除初始化。看起来按钮是在点击列表中初始化的。我想这就是问题所在
public void Soundplay(final long bps) {
//Remove this portion
**startb = (Button) findViewById(R.id.start_but);**
**stopb = (Button) findViewById(R.id.stop_but);**
...
}
希望有帮助。findViewById没有初始化新按钮,它只是找到具有相应id的视图。我现在看到整个应用程序中的所有按钮都不起作用。我从导航抽屉活动扩展了所有活动,并将所有活动充气,而不是setContentView。这可能是问题所在吗?糟糕的调试器也是问题所在。