【发布时间】:2014-01-09 19:48:52
【问题描述】:
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 如果我使用 MainActivity.this 那么这个编译错误会被标记:“没有 MainActivity 类型的封闭实例在范围内是可访问的”,当我使用 ViewPagerAdapter.this 然后从这一行“创建”得到如下编译错误:“MediaPlayer 类型中的方法 create(Context, int) 不适用于参数 (ViewPagerAdapter, int)”
-
你必须在这里chage MediaPlayer mp = MediaPlayer.create(getApplicationContext(), file);
-
这是我以前做过的。我应该分享更多代码吗?也许其他领域缺少一些东西?
-
@JiteshDalsaniya - 更新
标签: android imageview android-viewpager android-mediaplayer onclicklistener