【问题标题】:java.lang.NullPointerException: Attempt to invoke virtual method 'int android.media.AudioManager.getRingerMode()' on a null object reference [duplicate]java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“int android.media.AudioManager.getRingerMode()”[重复]
【发布时间】:2017-09-20 07:13:26
【问题描述】:
package p.a;

import android.media.AudioManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
    ImageView imageView;
    AudioManager audioManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final ImageView imageView = (ImageView) findViewById(R.id.imageView);
        final AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
        imageView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                int mode = audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT? AudioManager.RINGER_MODE_NORMAL:
                        AudioManager.RINGER_MODE_SILENT;
                audioManager.setRingerMode(mode);
                int imageid = audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT?
                        R.drawable.ringer_off:R.drawable.ringer_on;
                imageView.setImageResource(imageid);
            }


        });
    }
    public void onResume() {
        super.onResume();
        int imageid = audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT?
                R.drawable.ringer_off:R.drawable.ringer_on;
        imageView.setImageResource(imageid);
    }
}

查看我收到的错误消息的标题。除了硬编码之外,我看不到代码中的任何缺陷,但这无关紧要。有人帮我吗?请查看我收到的错误消息的标题。除了硬编码之外,我看不到代码中的任何缺陷,但这无关紧要。有人帮我吗?请查看我收到的错误消息的标题。除了硬编码之外,我看不到代码中的任何缺陷,但这无关紧要。有人帮我吗?请查看我收到的错误消息的标题。除了硬编码之外,我看不到代码中的任何缺陷,但这无关紧要。有人帮帮我吗?

【问题讨论】:

    标签: java android


    【解决方案1】:

    您正在创建两个 AudioManager。换行:

    final AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    

    到:

    audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    

    这将确保您使用已声明和初始化的 AudioManager。

    【讨论】:

    • 我已经解决了这个问题。但是在 onResume 方法周围它说 Error:(38, 5) error: class, interface, or enum expected
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 2015-02-09
    • 2020-09-17
    • 2015-04-20
    • 2015-08-17
    • 2019-01-21
    • 2014-04-15
    相关资源
    最近更新 更多