我嘗試從R.raw播放聲音。內線程/運行 但我不能得到這個工作。Runnable中的上下文
new Runnable(){ public void run() { //this is giving me a NullPointerException, because getBaseContext is null MediaPlayer mp = MediaPlayer.create(getBaseContext(), R.raw.soundfile); while (true) { if (something) play something } }
如何獲得運行方法中的真實上下文?無論我嘗試什麼,它都是空的。還是有更好的方法來做到這一點?
我有一個處理程序和額外的Runnable。但是,如果我想訪問額外的Runnable,我需要將它聲明爲一個類變量,所以沒有Context和getBaseContext爲null – oggy 2010-10-06 18:42:36
爲什麼沒有上下文?你可以將它保存在你的onCreate中,或者在開始你的線程之前:final Context myContext = ...;或者像YourHandler(Context c){mGlobalContext = c} ... – 2010-10-06 18:55:07
這樣擴展你的處理器初始化程序,這就是我想要弄清楚的。如果我聲明一個類變量Context c;並做c = getBaseContext();在onCreate方法中,我可以在onCreate方法中打印出來,它給了我一些東西。如果我在Runnable中打印上下文,它會給我null,無論是什麼 – oggy 2010-10-06 19:10:53