我是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'“
也许这就是发生的事情?
答案 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);
}
});