0

我對ViewPager nad onClickListener有此問題。我想擁有圖像庫(這是一個完美的作品)。問題出現在我希望它是可點擊的時候,因爲它會根據實際查看的圖像播放聲音。這是主要的。另一種是添加浮動按鈕,但這是次要情況。ViewPager onClickListener不起作用 - 關閉應用程序並出現錯誤

工作代碼:

int file = sounds[position]; 
    final MediaPlayer mp = MediaPlayer.create(context, file); 

    imggun.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 



      mp.start(); 

// mediaPlayer.start();

 } 
    }); 

編輯: 如果我擺脫編譯錯誤的有這樣的代碼:

imggun.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 

      int file = R.raw.beerburp; 
      MediaPlayer mp = MediaPlayer.create(getApplicationContext(), file); 
      mp.start(); 

     } 
    }); 

我得到來自logcat的:

01-10 12:53:03.993: E/AndroidRuntime(1380): FATAL EXCEPTION: main 
01-10 12:53:03.993: E/AndroidRuntime(1380): java.lang.NullPointerException 
01-10 12:53:03.993: E/AndroidRuntime(1380):  atandroid.media.MediaPlayer.create(MediaPlayer.java:668) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at com.example.package_name.ViewPagerAdapter$1.onClick(ViewPagerAdapter.java:81) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at android.view.View.performClick(View.java:2408) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at android.view.View$PerformClick.run(View.java:8817) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at android.os.Handler.handleCallback(Handler.java:587) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at android.os.Looper.loop(Looper.java:143) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at android.app.ActivityThread.main(ActivityThread.java:4914) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
01-10 12:53:03.993: E/AndroidRuntime(1380):  at dalvik.system.NativeStart.main(Native Method) 
+0

使用Youractivity.this而不是getApplicationContext()。 –

+0

@JiteshDalsaniya @JiteshDalsaniya如果我使用MainActivity.this,那麼這個編譯錯誤會被標記爲: 「沒有可以在範圍」 範圍內訪問封閉的MainActivity類型實例,當我使用ViewPagerAdapter.this然後從這一行'創建'得到像這樣的編譯錯誤: 「MediaPlayer類型中的方法create(Context,int)不適用於參數(ViewPagerAdapter,int)」 –

+0

您必須在此處填充MediaPlayer mp = MediaPlayer.create(getApplicationContext(),file); –

回答

0

的就是你得到的時候錯誤信息運行這或更多的邏輯錯誤,你點擊一個項目,它不會播放聲音,但沒有語法編譯錯誤?

+0

01-09 20:35:35.391:E/AndroidRuntime(12384):致命例外:主 01-09 20:35:35.391:E/AndroidRuntime(12384): java.lang.NullPointerException 01-09 20:35:35.391:E/AndroidRuntime(12384):\t at android.media.MediaPlayer.create(MediaPlayer.java:668) 01-09 20:35:35.391:E/AndroidRuntime(12384):\t at com.example。 .ViewPagerAdapter $ 1.onClick(ViewPagerAdapter.java:81) –

+0

如果我有點擺脫編譯錯誤,然後單擊應用程序強制關閉後。 –

+0

可以驗證聲音在這行代碼中不爲空: int file = sounds [position]; – reidisaki

0

我發現,當我使用此代碼中的onClick:

int file = sounds[position]; 
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), file); 
mp.start(); 

我得到的NullPointerException在第二行(MediaPlayer的MP = ...)。我認爲這可能是要走的路。

相關問題