0

我正在使用适用于 android 的 MediaPlayer 类,我在 activity_main.xml 上进行布局,如下所示:-

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/screen" android:layout_width="fill_parent" android:layout_height="fill_parent" >
    <LinearLayout android:orientation="vertical" android:layout_alignParentTop="true" 
        android:layout_alignParentLeft="true" android:layout_width="fill_parent" android:layout_height="fill_parent" 
        android:weightSum="7" >
        <LinearLayout android:layout_weight="6" android:orientation="vertical" android:layout_alignParentTop="true" 
            android:layout_alignParentLeft="true" android:layout_width="fill_parent" android:layout_height="0dip" >
            <ImageView android:id="@+id/bg" android:layout_width="fill_parent" android:layout_height="fill_parent" >
            </ImageView>
        </LinearLayout>
        <LinearLayout android:layout_weight="1" android:id="@+id/buttons" android:orientation="horizontal" android:weightSum="5" 
            android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:gravity="center" 
            android:layout_width="fill_parent" android:layout_height="0dip" android:background="#FFFFFF" >
            <Button android:id="@+id/btnPrevious" android:layout_width="0dip" android:layout_height="fill_parent" 
                android:layout_weight="1" android:background="@drawable/previous" android:layout_margin="5dp" 
                android:onClick="pauseradio" />
            <View android:layout_weight="1" android:layout_width="0dip" android:layout_height="0dip" />
            <Button android:id="@+id/btnPlay" android:layout_width="0dip" android:layout_height="fill_parent" 
                android:layout_weight="1" android:background="@drawable/play" android:layout_margin="5dp" 
                android:onClick="startradio" />
            <View android:layout_weight="1" android:layout_width="0dip" android:layout_height="0dip" />
            <Button android:id="@+id/btnNext" android:layout_width="0dip" android:layout_height="fill_parent" 
                android:layout_weight="1" android:background="@drawable/next" android:layout_margin="5dp" 
                android:onClick="stopradio" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

我为我的应用程序设置了 bg 但没有出现在它上面,我为我的媒体设置了下一个按钮并停止和上一个但不起作用。

我的功能是像这样在按钮上调用它:-

public void startradio() {
    mp.start();
}

public void pauseradio() {
    mp.pause();
}

public void stopradio() {
    mp.stop();
}

编辑 :-

我正在使用MediaPlayer类,但是当我的应用程序启动时出现此错误

04-25 19:06:23.323: I/dalvikvm(652): threadid=3: reacting to signal 3
04-25 19:06:23.352: I/dalvikvm(652): Wrote stack traces to '/data/anr/traces.txt'
04-25 19:07:52.862: D/gralloc_goldfish(702): Emulator without GPU emulation detected.
04-25 19:07:52.892: W/TextLayoutCache(702): computeValuesWithHarfbuzz -- need to force to single run
04-25 19:08:32.603: D/AndroidRuntime(702): Shutting down VM
04-25 19:08:32.603: W/dalvikvm(702): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
04-25 19:08:32.633: E/AndroidRuntime(702): FATAL EXCEPTION: main
04-25 19:08:32.633: E/AndroidRuntime(702): java.lang.IllegalStateException: Could not find a method pauseradio(View) in the activity class com.example.kam.MainActivity for onClick handler on view class android.widget.Button with id 'btnPrevious'
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.view.View$1.onClick(View.java:3026)
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.view.View.performClick(View.java:3480)
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.view.View$PerformClick.run(View.java:13983)
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.os.Handler.handleCallback(Handler.java:605)
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.os.Looper.loop(Looper.java:137)
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.app.ActivityThread.main(ActivityThread.java:4340)
04-25 19:08:32.633: E/AndroidRuntime(702):  at java.lang.reflect.Method.invokeNative(Native Method)
04-25 19:08:32.633: E/AndroidRuntime(702):  at java.lang.reflect.Method.invoke(Method.java:511)
04-25 19:08:32.633: E/AndroidRuntime(702):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-25 19:08:32.633: E/AndroidRuntime(702):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-25 19:08:32.633: E/AndroidRuntime(702):  at dalvik.system.NativeStart.main(Native Method)
04-25 19:08:32.633: E/AndroidRuntime(702): Caused by: java.lang.NoSuchMethodException: pauseradio [class android.view.View]
04-25 19:08:32.633: E/AndroidRuntime(702):  at java.lang.Class.getConstructorOrMethod(Class.java:460)
04-25 19:08:32.633: E/AndroidRuntime(702):  at java.lang.Class.getMethod(Class.java:915)
04-25 19:08:32.633: E/AndroidRuntime(702):  at android.view.View$1.onClick(View.java:3019)
04-25 19:08:32.633: E/AndroidRuntime(702):  ... 11 more

我如何在我的 Android 应用程序上调用此函数。

4

2 回答 2

1

您需要更改方法的签名

public void startradio(View v) {
    mp.start();
}

public void pauseradio(View v) {
    mp.pause();
}

public void stopradio(View v) {
    mp.stop();
}
于 2013-04-25T21:25:12.883 回答
0

您是否在 mediaplayer 对象上调用了 Prepare ?

http://developer.android.com/reference/android/media/MediaPlayer.html

查看生命周期信息,如果您从异常中发布堆栈跟踪,它也确实很有帮助。

于 2013-04-25T21:15:28.993 回答