为什么找不到这些符号?

时间:2019-03-06 17:31:58

标签: java android button android-mediaplayer

好的,这次有一个android studio发行。请注意,这不是我必须交的作业,我只是想完成本章中的示例。

看来PlayMusic.java文件中的bUkulele和bDrums变量正在发生错误,但我不知道为什么。

package net.androidbootcamp.alohamusic;

import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class PlayMusic extends AppCompatActivity {

    Button button1, button2;
    MediaPlayer mpUkulele, mpDrums;
    int playing;


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

        button1 = (Button) findViewById(R.id.btnUkulele);
        button2 = (Button) findViewById(R.id.btnDrums);
        button1.setOnClickListener(bUkulele);
        button2.setOnClickListener(bDrums);
        mpUkulele = new MediaPlayer();
        mpUkulele = MediaPlayer.create(this, R.raw.ukulele);
        mpDrums = new MediaPlayer();
        mpDrums = MediaPlayer.create(this, R.raw.drums);
        playing = 0;

        Button.OnClickListener bUkulele = new Button.OnClickListener() {
            @Override
            public void onClick(View V) {
                switch (playing) {
                    case 0:
                        mpUkulele.start();
                        playing = 1;
                        button1.setText("Pause Ukulele Song");
                        button2.setVisibility(View.INVISIBLE);
                        break;
                    case 1:
                        mpUkulele.pause();
                        playing = 0;
                        button1.setText("Play Ukulele Song");
                        button2.setVisibility(View.VISIBLE);
                        break;
                }
            }

            ;

            Button.OnClickListener bDrums = new Button.OnClickListener() {
                @Override
                public void onClick(View V) {
                    switch (playing) {
                        case 0:
                            mpDrums.start();
                            playing = 1;
                            button2.setText("Pause Drums Song");
                            button1.setVisibility(View.INVISIBLE);
                            break;
                        case 1:
                            mpDrums.pause();
                            playing = 0;
                            button2.setText("Play Drums Song");
                            button1.setVisibility(View.VISIBLE);
                            break;
                    }
                }
            };
        };
    }
}

我得到的错误是:

“错误:找不到符号变量bUkulele” “错误:找不到符号变量bDrums”

我已经读完本章,但除了这个.java文件之外,我找不到其他创建或调用这些变量的实例。

由于我知道我们的教科书过时了,因此由于Android Studio的更新版本,代码是否可能会有所不同?

3 个答案:

答案 0 :(得分:3)

  

似乎PlayMusic.java文件中的bUkulele和bDrums变量发生了错误,但我不知道为什么。

那是因为您在定义对象之前就尝试使用它们。

带有真实示例的说明:

约翰在走

约翰吃苹果

约翰抢了一个苹果

约翰要吃什么?因为他还没有抓住苹果,所以我建议您在打电话之前先放些东西。

那么约翰就可以吃苹果了:)

顺便说一句:创建setOnClickListener()看一下here

有很多简单的方法

答案 1 :(得分:1)

您的问题是,在定义它们之前,您尝试将bUkulele和bDrums变量添加为onClickListeners。如果在使用变量之前将其初始化移至,则应该可以。

答案 2 :(得分:0)

好,谢谢大家的建议。

仅出于记录目的,我确实尝试过预先定义变量。这是Android Studio给我的第一个建议,但没有奏效。我遇到了同样的错误。

但是,我确实发现了问题。事实证明,最后一些括号放在错误的位置,仅此而已。我移动了它们,该程序现在可以完美运行。