我正在制作一个android应用程序,在启动过程中,我禁用了媒体播放器的pauze按钮。 单击确定按钮(音乐开始播放)后,我要启用纱布按钮。

这段代码可以正常工作,除了最后一行(我确实删除了一些不相关的行)。 这给了我一个运行时错误(NullPointerException)。

我使用MainActivity.this来访问按钮。 我究竟做错了什么?

感谢您的任何帮助!

public class MainActivity extends Activity {

    // initialise variables
    TextView textOut;
    MediaPlayer mediaPlayer;
    Button buttonPauze;
    Button ok;

    // *******************************************************
    // set Layout - on create
    // *******************************************************
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textOut = (TextView) findViewById(R.id.textView1);


        // *******************************************************
        // set the play, generate and pauze buttons
        // *******************************************************
        Button buttonPauze = (Button) findViewById(R.id.buttonPauze);
        Button ok = (Button) findViewById(R.id.buttonStart);

        buttonPauze.setOnClickListener(buttonPauseOnClickListener);
    buttonPauze.setEnabled(false);
    ok.setEnabled(true);

    // *******************************************************
    // on click generate
    // *******************************************************
    ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            MainActivity.this.buttonPauze.setEnabled(true);

#1楼 票数:2 已采纳

更换:

Button buttonPauze = (Button) findViewById(R.id.buttonPauze);

有:

buttonPauze = (Button) findViewById(R.id.buttonPauze);

基本上,您有2个buttonPauze ,一个是局部变量,另一个是类字段。 通过删除Button ,您将在本地使用类字段buttonPauze并为其分配适当的对象。


ok

#2楼 票数:2

NPE是因为您正在将按钮引用分配给onCreate()局部变量,然后尝试访问未初始化的全局变量。 替换为:

Button buttonPauze = (Button) findViewById(R.id.buttonPauze);

有了这个

buttonPauze = (Button) findViewById(R.id.buttonPauze);

为避免此类错误,您可以改编常规做法并为类的全局变量添加前缀,例如

Button mButton;

不要使用MainActivity.this. 句法。 当您访问同一类的变量时,这毫无意义。 只是

buttonPauze.setEnabled(true);

足够(顺便说一句:“暂停”)。

#3楼 票数:0

在行中

Button buttonPauze = (Button) findViewById(R.id.buttonPauze);

您正在定义并分配给局部变量,而不是实例变量。 因此,当您在该行中引用实例变量时

MainActivity.this.buttonPauze.setEnabled(true);

buttonPauze尚未设置,仍然为null 要修复,只需更改为

buttonPauze = (Button) findViewById(R.id.buttonPauze);

#4楼 票数:0

因为您正在使用与全局变量相同的名称创建局部变量,所以存在问题。

//不创建局部变量

  buttonPauze = (Button) findViewById(R.id.buttonPauze);
  ok = (Button) findViewById(R.id.buttonStart);

#5楼 票数:0

不要定义buttonPause两次。

  ask by dorien translate from so

未解决问题?本站智能推荐:

1回复

Java中的按钮/图像及其定位(Android应用程序)问题

我目前正在开发一个应用程序,但遇到了一个问题。 我想要一个可以移动的按钮或图像。 在后台,我有 3 个“区域”可以放置按钮/图像。 我不知道该找什么。 我在互联网上搜索过类似的东西 https://developer.android.com/training/gestures/movement
1回复

android应用程序运行时如何忽略设置或其他按钮功能

问题很简单,Android应用程序运行时如何忽略设置或其他按钮功能? 我们有一个应用程序,一切都很好,但是当我们按下按钮(手机上的硬件)时,该应用程序会错误关闭(不幸的是,应用程序已停止)。我们只想忽略设置按钮,而在“返回“(<-)按钮被按下。 谢谢您的回答。
6回复

Android应用程序背景颜色按钮

再次您好,我还有一个关于我的hello world应用程序的问题,我想在按下A按钮时更改背景,所以我这样做了: 但这会更改按钮的背景颜色,而不是整个应用程序。 编辑 我还有两个问题。 1)我该如何设置 像这样: 2)我该怎么做才能更改文字颜色? 就像是:
3回复

应用程序后退按钮android[重复]

这个问题已经在这里有了答案 : 6年前关闭。 如何检测“最近使用的应用”系统按钮的点击次数(Honeycomb +) (8个答案) 当我按下android中的return applicatio
2回复

Android应用程序动态添加的按钮与布局按钮的颜色不同

我正在尝试向DialogFragment添加新按钮,并且该按钮正在显示,但是字体和颜色与其他按钮完全不同。 其他按钮由LayoutInflater在XML文件中的布局上生成。 XML文件中的按钮如下所示: 然后,在某些情况下,我将添加一个删除按钮,如下所示: 我应该怎么做才能使这个
1回复

当我在Android应用程序中单击“Notes”按钮时,如何调用NoteMain类

如上。 我确定自己在做什么错。 这是MainActivity.java的代码和NoteMain.java的代码,当我在应用程序加载时单击主屏幕上的Notes按钮时,它说“ Unfortunately,(app name) has stopped 。 不知道为什么 任何帮助表示赞赏。
2回复

Android应用程序-根据按下次数从按钮输入整数

我正在使用android studio为android编写计算器应用程序。 我想使用4个按钮输入值和功能。 但是,我目前的操作方式是从按钮上写入的文本中获取输入。 因此,当我的按钮1/2/3按下时,将1/2/3传递给textView。 以下是我的MainActivity: 和我的a
4回复

Android应用程序在单击按钮时崩溃

我一直在尝试在 Eclipse 中制作我的第一个 android 应用程序(一个简单的温度转换器),但是当我单击手机上的按钮时,应用程序崩溃了。 这是完整的java代码 单击按钮时的 LogCat 最后是按钮的 xml 我不确定如何解决这个问题,所以希望有人可以提供帮助。 谢谢。