2014-10-28 47 views
0

好日子所有,我是新来的Android开发,我试图做一个简单的音频管理器,其中MainActivity类将处理按钮监听事件和听众类将有沉默(),vibrate(),ring()方法。到目前为止,应用程序正在启动,但每当我点击vibrate按钮应用程序获取部队关闭。我认为我的代码有问题,但自从我是新手之后,我无法弄清楚。按钮在安卓AudioManager不工作

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事件有什么问题?请今天我需要这个解决方案,你的帮助将非常可观。 TNX。

回答

1

您在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); 
    } 
} 
+0

tnQ。它正在工作。我知道我的代码有问题。 – 2014-10-28 15:53:04