1

ImageView を使用してサイコロをエミュレートしようとしています。ボタンをクリックしても、何も起こらないようです。この例をハードコーディングして、デバッグ目的で画像を imageView4 に置き換えました (ランダムが失敗しないようにしていました)。2.2 バニラ エミュレーターでアプリケーションを実行すると、アプリケーションがクラッシュします。誰かが私が間違っていることを指摘できますか? 私はJava、Eclipse、およびAndroidを初めて使用するので、おそらく複数の間違いを犯したと確信しています。

ジャワ:

package mobile.applications.yahztee4;

import java.util.Random;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;

public class Yahtzee4Activity extends Activity {
    /** Called when the activity is first created. */

    ImageButton dice1, dice2, dice3, dice4, dice5;
    Button roll, begin;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);              

        PlayGame();

    }

    public void PlayGame()  
    {  
        dice1 = (ImageButton)findViewById(R.id.btndice1);  

        begin = (Button)findViewById(R.id.btnroll);
        roll = (Button)findViewById(R.id.btnbegin);

        begin.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Random rand = new Random();     
                int rndInt = rand.nextInt(6) + 1; // Random number between 1 and 6

                String imgName = "die" + rndInt;

                int id = getResources().getIdentifier(imgName, "drawable", getPackageName());  
                dice1.setImageResource(id);                 
            }
        });  
    }  
}

ボタンの XML:

 <?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="horizontal" 
    android:baselineAligned="false" >

    <TableLayout
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight="1.13" >


        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView5"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="1&apos;s" />

            <TextView
                android:id="@+id/textView1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />

            <TextView
                android:id="@+id/textView9"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="3 of Kind" />

            <TextView
                android:id="@+id/textView10"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />

        </TableRow>


        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView2"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="2&apos;s" />

            <TextView
                android:id="@+id/textView6"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />


            <TextView
                android:id="@+id/textView11"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="4 of Kind" />

            <TextView
                android:id="@+id/textView12"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />
        </TableRow>


        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView3"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="3&apos;s" />

            <TextView
                android:id="@+id/textView7"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />

            <TextView
                android:id="@+id/textView13"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Full House" />

            <TextView
                android:id="@+id/textView14"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />
        </TableRow>


        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >

            <TextView
                android:id="@+id/textView4"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="4&apos;s" />

            <TextView
                android:id="@+id/textView8"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />

            <TextView
                android:id="@+id/textView15"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Sm Straight" />

            <TextView
                android:id="@+id/textView16"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="TextView" />
        </TableRow>


         <TableRow
             android:id="@+id/tableRow5"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" >

             <TextView
                 android:id="@+id/textView17"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="5&apos;s" />

             <TextView
                 android:id="@+id/textView18"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />

             <TextView
                 android:id="@+id/textView19"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Lg Straight" />

             <TextView
                 android:id="@+id/textView20"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />
         </TableRow>

         <TableRow
             android:id="@+id/tableRow6"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" >

             <TextView
                 android:id="@+id/textView21"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="6&apos;s" />

             <TextView
                 android:id="@+id/textView22"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />

             <TextView
                 android:id="@+id/textView23"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Yahtzee" />

             <TextView
                 android:id="@+id/textView24"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />
         </TableRow>

         <TableRow
             android:id="@+id/tableRow7"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" >

             <TextView
                 android:id="@+id/textView25"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Bonus (35)" />

             <TextView
                 android:id="@+id/textView26"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />

             <TextView
                 android:id="@+id/textView27"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Chance" />

             <TextView
                 android:id="@+id/textView28"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />
         </TableRow>

         <TableRow
             android:id="@+id/tableRow8"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" >

             <TextView
                 android:id="@+id/textView29"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Upper Score" />

             <TextView
                 android:id="@+id/textView30"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />

             <TextView
                 android:id="@+id/textView31"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Lower Score" />

             <TextView
                 android:id="@+id/textView32"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />
         </TableRow>

         <TableRow
             android:id="@+id/tableRow9"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" >

             <TextView
                 android:id="@+id/textView33"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Yz Bonus" />

             <TextView
                 android:id="@+id/textView34"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />

             <TextView
                 android:id="@+id/textView35"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Total Score" />

             <TextView
                 android:id="@+id/textView36"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />
         </TableRow>

         <TableRow
             android:id="@+id/tableRow10"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" >

             <TextView
                 android:id="@+id/textView37"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Turn#" />

             <TextView
                 android:id="@+id/textView38"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="TextView" />

             <TextView
                 android:id="@+id/textView39"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Total Score" />

             <TextView
                 android:id="@+id/textView40"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:text="Roll #" />
         </TableRow>

         <TableRow
              android:id="@+id/tableRow11"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:gravity="center" >

              <ImageView
                  android:id="@+id/btndice1"
                  android:layout_width="60dip"
                  android:layout_height="70dip"
                  android:padding="2dip" />              
              <ImageView
                  android:id="@+id/btndice2"
                  android:layout_width="60dip"
                  android:layout_height="70dip"
                  android:padding="2dip" />

              <ImageView
                  android:id="@+id/btndice3"
                  android:layout_width="60dip"
                  android:layout_height="70dip"
                  android:padding="2dip" />

              <ImageView
                  android:id="@+id/btndice4"
                  android:layout_width="60dip"
                  android:layout_height="70dip"
                  android:padding="2dip" />

              <ImageView
                  android:id="@+id/btndice5"
                  android:layout_width="60dip"
                  android:layout_height="70dip"
                  android:padding="2dip" />

        </TableRow>

          <Button
              android:id="@+id/btnroll"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/roll" 
          />

          <Spinner
              android:id="@+id/spinner"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:prompt="@string/score_prompt_spinner" />

          <Button
              android:id="@+id/btnbegin"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="@string/begin" />

    </TableLayout>


</LinearLayout>

エラー ログ ファイル

06-10 18:21:31.674: D/AndroidRuntime(705): Shutting down VM
06-10 18:21:31.674: W/dalvikvm(705): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
06-10 18:21:31.684: E/AndroidRuntime(705): FATAL EXCEPTION: main
06-10 18:21:31.684: E/AndroidRuntime(705): java.lang.RuntimeException: Unable to start activity ComponentInfo{michelle.harris.yahztee4/michelle.harris.yahztee4.Yahtzee4Activity}: java.lang.ClassCastException: android.widget.ImageView
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.os.Handler.dispatchMessage(Handler.java:99)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.os.Looper.loop(Looper.java:123)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.app.ActivityThread.main(ActivityThread.java:4627)
06-10 18:21:31.684: E/AndroidRuntime(705):  at java.lang.reflect.Method.invokeNative(Native Method)
06-10 18:21:31.684: E/AndroidRuntime(705):  at java.lang.reflect.Method.invoke(Method.java:521)
06-10 18:21:31.684: E/AndroidRuntime(705):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
06-10 18:21:31.684: E/AndroidRuntime(705):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
06-10 18:21:31.684: E/AndroidRuntime(705):  at dalvik.system.NativeStart.main(Native Method)
06-10 18:21:31.684: E/AndroidRuntime(705): Caused by: java.lang.ClassCastException: android.widget.ImageView
06-10 18:21:31.684: E/AndroidRuntime(705):  at michelle.harris.yahztee4.Yahtzee4Activity.PlayGame(Yahtzee4Activity.java:28)
06-10 18:21:31.684: E/AndroidRuntime(705):  at michelle.harris.yahztee4.Yahtzee4Activity.onCreate(Yahtzee4Activity.java:22)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
06-10 18:21:31.684: E/AndroidRuntime(705):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
06-10 18:21:31.684: E/AndroidRuntime(705):  ... 11 more
4

1 に答える 1

2

ビュー自体には何もしていません。現在、新しい ImageView オブジェクトを作成し、ドローアブルをそれに割り当てていますが、どこにも表示していません。onCreate で findViewById(..) によって ImageView を取得するか、onMyButtonClick で取得するビューをパラメーターとして ImageView にキャストし、「rndInt」に応じてドローアブル/リソースを変更できるはずです。

于 2012-06-10T16:37:21.277 に答える