java - 为什么找不到这些符号?

标签 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 版本较新,代码是否可能会有所不同,因为我知道我们的教科书相当过时?

最佳答案

It appears that the error is happening with the bUkulele and bDrums variables in the PlayMusic.java file but I can't figure out why.

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

用现实世界的例子进行解释:

约翰正在走路

约翰吃苹果

约翰抓起一个苹果

什么会吃掉约翰?任何东西,因为他还没有捕获苹果,所以我建议你在调用它们之前先放置这些对象。

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

顺便说一句:有很多更简单的方法来创建 setOnClickListener() 看看 here

关于java - 为什么找不到这些符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55029015/

相关文章:

使用 JAXB 进行 namespace 绑定(bind)的 Java feed XML

android - 如何在使用 ScrollView 时隐藏软键盘输入

java - 阵列适配器 : You must supply a resource ID for a TextView- Android Studio

html - CSS 高级三按钮行格式化

java - 如何像在 Java EE 6 中一样在 Spring 3 中获取实体管理器

java - 从 Android 中的时间戳获取日期名称

java - Nexus 5 通知灯光颜色

java - setPixel() 返回 NullPointerException

ios - Xcode,按钮未显示在 UITableView 上(基本级别)

c# - Treeview 隐藏 [+] [-] 按钮