大家好,我是 Android 开发新手,我正在尝试制作一个简单的音频管理器,其中 MainActivity 类将处理按钮监听器事件和 Listeners类将具有silent()、vibrate()、ring() 方法。到目前为止,应用程序正在启动,但每当我单击振动
按钮时,应用程序就会强制关闭。我认为我的代码有问题,但由于我是新人,所以我无法弄清楚。
MainActivity.java
public class MainActivity extends Activity {
private Button home, pocket, silent;
private TextView tv;
private Listeners myAudManHolder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
home = (Button) findViewById(R.id.home);
pocket = (Button) findViewById(R.id.pocket);
silent = (Button) findViewById(R.id.silent);
tv = (TextView) findViewById(R.id.tv);
myAudManHolder = new Listeners();
pocket.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
myAudManHolder.vibrate();
}
});
}
Listeners.java
public class Listeners {
AudioManager myAudMan;
public void vibrate() {
myAudMan.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
}
LogCat 日志
10-28 20:57:51.381: W/dalvikvm(1232): threadid=1: thread exiting with uncaught exception (group=0x40015560)
10-28 20:57:51.401: E/AndroidRuntime(1232): FATAL EXCEPTION: main
10-28 20:57:51.401: E/AndroidRuntime(1232): java.lang.NullPointerException
10-28 20:57:51.401: E/AndroidRuntime(1232): at edu.shihank.audiomanager.Listeners.vibrate(Listeners.java:13)
10-28 20:57:51.401: E/AndroidRuntime(1232): at edu.shihank.audiomanager.MainActivity$1.onClick(MainActivity.java:39)
我的 vibrate()
方法及其 OnClickListener 事件有什么问题?我今天需要这个解决方案,您的帮助将非常感激。交易。
最佳答案
Listeners.java 中的 myAudMan 为空。
试试这个
在MainActivity.java中
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
myAudManHolder = new Listeners(am);
和
公共(public)类听众{
AudioManager myAudMan;
Listners(AudioManager audioManager){
this.myAudMan = audioManager;
}
public void vibrate() {
myAudMan.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
}
关于java - 按钮在 Android AudioManager 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26612396/