Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Button.setOnClickListener不';我根本不工作_Java_Android - Fatal编程技术网

Java Button.setOnClickListener不';我根本不工作

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

我正在为Android编程一个节拍器,并使用一个线程在用户说的节奏中播放声音,但不知何故,我的
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。这可能是问题所在吗?糟糕的调试器也是问题所在。