单击按钮时如何调用AndroidService方法?

时间:2018-06-13 10:52:59

标签: android android-audiomanager

我是Android开发的新手,我试图通过单击按钮调用AudioManager对象上的方法。不幸的是,当这样做时,应用程序崩溃了。

以下是我的onCreate()方法的代码:

@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);
        }
    });

我确实收到了警告

  

“方法调用'setRingerMode'可能会产生   '显示java.lang.NullPointerException'“

也许这就是发生的事情?

1 个答案:

答案 0 :(得分:1)

尝试在create上初始化音频管理器。它会工作。

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);
                }
            });