1

I am new to Android development and am trying to call a method on an AudioManager-object by the click of a button. Unfortunately, when doing so the app just crashes.

Here is the code for my onCreate() method:

@Override
protected void onCreate(Bundle savedInstanceState) {
    final AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_change_phone_volume);

    Button silenceBtn = (Button) findViewById(R.id.silenceBtn);
    Button vibrateBtn = (Button) findViewById(R.id.vibrateBtn);
    Button callBtn = (Button) findViewById(R.id.ringBtn);

    silenceBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
        }
    });

I do get a warning that

"Method invocation 'setRingerMode' may produce 'java.lang.NullPointerException'"

Perhaps this is what is happening?

E.Abdel
  • 1,992
  • 1
  • 13
  • 24
Nora
  • 1,825
  • 8
  • 31
  • 47

1 Answers1

1

Try to initialize audio manager inside on create. It will work.

final AudioManager audioManager;
     @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_change_phone_volume);

          audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

            Button silenceBtn = (Button) findViewById(R.id.silenceBtn);
            Button vibrateBtn = (Button) findViewById(R.id.vibrateBtn);
            Button callBtn = (Button) findViewById(R.id.ringBtn);

            silenceBtn.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View view) {
                    audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                }
            });
santosh kumar
  • 2,952
  • 1
  • 15
  • 27