【问题标题】:ViewPager onClickListener don't work - shuts app down with an errorViewPager onClickListener 不起作用 - 关闭应用程序并出现错误
【发布时间】: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


【解决方案1】:

您在运行此程序时收到的错误消息是什么,或者这更像是一个逻辑错误,您单击一个项目并且它没有播放声音但没有语法编译错误?

【讨论】:

  • 01-09 20:35:35.391: E/AndroidRuntime(12384): 致命异常: main 01-09 20:35:35.391: E/AndroidRuntime(12384): java.lang.NullPointerException 01 -09 20:35:35.391: E/AndroidRuntime(12384): 在 android.media.MediaPlayer.create(MediaPlayer.java:668) 01-09 20:35:35.391: E/AndroidRuntime(12384): 在 com.example ..ViewPagerAdapter$1.onClick(ViewPagerAdapter.java:81)
  • 如果我在某种程度上摆脱了编译错误,那么在单击应用程序强制关闭后。
  • 你能验证这行代码中的声音不为空吗:int file =sounds[position];
  • 我已经用编译错误和无错误(使用 LogCat 文件)@reidisaki 更新了我的问题
【解决方案2】:

我发现当我在onClick中使用这段代码时:

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

我在第二行得到 NullPointerException (MediaPlayer mp = ...)。我认为这可能是要走的路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-10
    • 1970-01-01
    • 2018-05-09
    • 2021-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多