1

そこで、子供向けの響板アプリの開発に取り組んでいます。これは私の最初のアプリなので、ご想像のとおり、私が何をしているのかほとんどわかりません (noob) ので、前もってお詫び申し上げます :-)。問題がどこにあるのかわかりませんが、スプラッシュ画面は問題なく動作しますが、次のアクティビティをロードしようとすると強制的に閉じます。音声を再生する Java ファイルと、クリック可能な画像であるボタンのレイアウトをマニフェストに含めます。前もって感謝します!また、ボタンがサウンドプールを使用して画像に関連するランダムなサウンドを再生できる場所に設定したいと思いますが、これもまたノブです。エラーについてはよくわかりませんが、mymenu アクティビティが開始されない理由として java.land.classcastexception: android.widget.imageview が表示されます。それが役立つことを願っています。

<?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>
4

1 に答える 1

1

Java コードはButton、レイアウトでオブジェクトを見つけることを期待しています。

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

しかし、あなたのレイアウトでは、そのウィジェットが次のように宣言されていますImageView

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

ImageViewではなく、ButtonJava コードがそれを強制的に にしようとするとButtonjava.lang.ClassCastException.

修正する 2 つの選択肢:

1) Java コードを使用するように変更しますImageView

2) レイアウトを変更して a を宣言しButtonます。

どちらも、設定しようとしているクリック リスナーを受け入れます。アプリの両方のウィジェットに対してこの修正を行う必要があることを忘れないでください。

于 2011-11-06T19:37:56.380 に答える