大家好,我是android开发的新手,我正在尝试制作一个简单的音频管理器,其中MainActivity类将处理按钮侦听器事件,Listeners将具有silent()、vibrate()、ring()方法。到目前为止,应用程序正在启动,但每当我单击vibrate
按钮时,应用程序就会得到强制关闭。我认为我的代码有问题,但由于我是新手,我无法解决。
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();
}
});
}
监听器.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事件有什么问题?求你了,我今天需要这个解决方案,你的帮助将是非常可观的。Tnx。
Listeners.java中的myAudMan为null。
试试这个
在MainActivity.java 中
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
myAudManHolder = new Listeners(am);
和
公共类监听器{AudioManager myAudMan;
Listners(AudioManager audioManager){
this.myAudMan = audioManager;
}
public void vibrate() {
myAudMan.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
}
}