我對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)
使用Youractivity.this而不是getApplicationContext()。 –
@JiteshDalsaniya @JiteshDalsaniya如果我使用MainActivity.this,那麼這個編譯錯誤會被標記爲: 「沒有可以在範圍」 範圍內訪問封閉的MainActivity類型實例,當我使用ViewPagerAdapter.this然後從這一行'創建'得到像這樣的編譯錯誤: 「MediaPlayer類型中的方法create(Context,int)不適用於參數(ViewPagerAdapter,int)」 –
您必須在此處填充MediaPlayer mp = MediaPlayer.create(getApplicationContext(),file); –