Soundboard App力关闭,我无法弄清楚原因

时间:2011-11-06 19:09:45

标签: android media-player soundpool

所以我一直在为我的孩子们制作一个音板应用程序。这是我的第一个应用程序,所以你可以想象我几乎不知道我在做什么(noob)所以我提前道歉:-)。我不确定我的问题在哪里,但我的启动画面运行没有问题但是当它试图加载下一个活动时它会强制关闭。我要将我的清单包括应该播放音频的java文件和可点击图像的按钮布局。提前致谢!此外,我想设置它的按钮可以播放与使用soundpool相关的随机声音,但再次使用noobness。我对错误并不是很熟悉,但我看到java.land.classcastexception:android.widget.imageview是mymenu活动没有启动的原因。希望有所帮助。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pnl.thebasics"
    android:versionCode="1"
    android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
    android:icon="@drawable/sssicon"
    android:label="@string/app_name" >
    <activity android:label="@string/app_name" android:name=".myMain">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:label="@string/app_name" android:name=".myMenu">
        <intent-filter>
            <action android:name="com.pnl.thebasics.CLEARSCREEN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>



</application>

</manifest>


package com.pnl.thebasics;

import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

public class myMenu extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    // Hide the title bar
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    // Go full screen
    final Window window = getWindow();
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,                 WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.menu);

    //these are the buttons that play sounds

    //button 1 (sponge bob)
    final MediaPlayer mpButtonClick1 = MediaPlayer.create(this, R.raw.sb1);
    Button bSpongebob = (Button) findViewById(R.id.sbbutton);
    bSpongebob.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            mpButtonClick1.start();
        }
    });
    //button 2 (patrick)
    final MediaPlayer mpButtonClick2 = MediaPlayer.create(this, R.raw.pat1);
    Button bPatrick = (Button) findViewById(R.id.patbutton);
    bPatrick.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub

            mpButtonClick2.start();
        }
    });
}



}


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<LinearLayout
    android:id="@+id/LinearLayout01"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/sbbutton"
        android:layout_width="wrap_content"
        android:layout_height="130dp"
        android:layout_weight="50"
        android:clickable="true"
        android:src="@drawable/sbbuttonimage" />

    <ImageView
        android:id="@+id/patbutton"
        android:layout_width="wrap_content"
        android:layout_height="130dp"
        android:layout_weight="50"
        android:clickable="true"
        android:src="@drawable/patbuttonimage" />
</LinearLayout>



<LinearLayout
    android:id="@+id/LinearLayout02"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/mrcrabsbutton"
        android:layout_width="wrap_content"
        android:layout_height="130dp"
        android:layout_weight="50"
        android:clickable="true"
        android:src="@drawable/mrcrabsbuttonimage" />

    <ImageView
        android:id="@+id/squidwardbutton"
        android:layout_width="wrap_content"
        android:layout_height="130dp"
        android:layout_weight="50"
        android:clickable="true"
        android:src="@drawable/squidwardbuttonimage" />
</LinearLayout>

<LinearLayout
    android:id="@+id/LinearLayout03"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <ImageView
        android:id="@+id/planktonbutton"
        android:layout_width="wrap_content"
        android:layout_height="130dp"
        android:layout_weight="50"
        android:clickable="true"
        android:src="@drawable/planktonbuttonimage" />

    <ImageView
        android:id="@+id/garybutton"
        android:layout_width="wrap_content"
        android:layout_height="130dp"
        android:layout_weight="50"
        android:clickable="true"
        android:src="@drawable/garybuttonimage" />
</LinearLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

您的Java代码希望在布局中找到Button对象:

Button bSpongebob = (Button) findViewById(R.id.sbbutton);

但您的布局声明该窗口小部件为ImageView

<ImageView
    android:id="@+id/sbbutton"

ImageView不是Button,当您的Java代码试图强制它为Button时,您会获得java.lang.ClassCastException

要解决的两个选择:

1)将您的Java代码更改为使用ImageView

2)更改布局以声明Button

要么接受您尝试设置的点击监听器。不要忘记您需要为应用中的两个小部件进行此修复。