2014-10-28 48 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