我写了这个应用程序,用户可以通过单击图像按钮来切换静音模式: 包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);
ImageView imageView = (ImageView) findViewById(R.id.imageView);
final AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
View.OnClickListener onClickListener = new View.OnClickListener(){
@Override
public void onClick(View view) {
mode.toggle(audioManager);
update();
}
};
imageView.setOnClickListener(onClickListener);
}
public void update(){
int mod=mode.phonesilent(audioManager)?
R.drawable.ringer_off:
R.drawable.ringer_on;
}
}
这是模式类:
package p.a;
import android.media.AudioManager;
/**
* Created by root on 9/19/17.
*/
public class mode {
public static boolean phonesilent(AudioManager audioManager){
return audioManager.getRingerMode()==AudioManager.RINGER_MODE_SILENT;
}
public static void toggle(AudioManager audioManager){
int mode = phonesilent(audioManager)?
AudioManager.RINGER_MODE_NORMAL:
AudioManager.RINGER_MODE_SILENT;
}
}
应用程序可以正常初始化,但是当我单击图像图标时,它会崩溃并在标题中生成错误消息。 这是logcat:
java.lang.NullPointerException: Attempt to invoke virtual method 'int android.media.AudioManager.getRingerMode()' on a null object reference
at p.a.mode.phonesilent(mode.java:11)
at p.a.MainActivity.update(MainActivity.java:29)
at p.a.MainActivity$1.onClick(MainActivity.java:22)
答案 0 :(得分:0)
首先创建一个这样的模式对象:
Mode mode = new Mode();
答案 1 :(得分:0)
你可以这样做,因为Vamshi Krishna说,这对于这个问题来说是一个很好的答案,但是如果你不想因某种原因实例化它,可以将“Mode class”更改为“Mode static class”,如下所示:
package p.a;
import android.media.AudioManager;
/**
* Created by root on 9/19/17.
*/
public static class mode {
public static boolean phonesilent(AudioManager audioManager){
return audioManager.getRingerMode()==AudioManager.RINGER_MODE_SILENT;
}
public static void toggle(AudioManager audioManager){
int mode = phonesilent(audioManager)?
AudioManager.RINGER_MODE_NORMAL:
AudioManager.RINGER_MODE_SILENT;
}
}
希望它有所帮助!