2014-03-04 27 views
0

发现错误的堆栈跟踪是: 它是一个非常简单的代码,我不明白为什么它显示如此,请尝试修复它。MainActivity线程中的ClasscastException

03-04 21:09:11.837: E/AndroidRuntime(902): FATAL EXCEPTION: main 
    03-04 21:09:11.837: E/AndroidRuntime(902): java.lang.RuntimeException: Unable to start activity ComponentInfo{candyhive.bitcream.candy/candyhive.bitcream.candy.Loadscreen}: java.lang.ClassCastException: android.widget.TextView 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.os.Handler.dispatchMessage(Handler.java:99) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.os.Looper.loop(Looper.java:123) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.app.ActivityThread.main(ActivityThread.java:3683) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at java.lang.reflect.Method.invokeNative(Native Method) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at java.lang.reflect.Method.invoke(Method.java:507) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at dalvik.system.NativeStart.main(Native Method) 
    03-04 21:09:11.837: E/AndroidRuntime(902): Caused by: java.lang.ClassCastException: android.widget.TextView 
    03-04 21:09:11.837: E/AndroidRuntime(902): at candyhive.bitcream.candy.Loadscreen.onCreate(Loadscreen.java:87) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    03-04 21:09:11.837: E/AndroidRuntime(902): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
    03-04 21:09:11.837: E/AndroidRuntime(902): ... 11 more 

代码:

public void onCreate(Bundle savedInstanceState) { 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_loadscreen); 
     e1= (EditText) findViewById(R.id.editText1); 
     r1=new Random(); 
     iv1 = (ImageView) findViewById(R.id.imageView1); 
     iv1.setOnClickListener(new OnClickListener() { 
      public void onClick(View arg0) { 
       s= e1.getText().toString(); 
       if(s.matches("")){ 
        int time=2000; 
        Toast.makeText(Loadscreen.this, "Please specify the level", time).show(); 
       } 
       else{ 
        int str= Integer.valueOf(s); 
        if(str>0 && str<11){ 
         calculate(str); 
         r2=new Random(); 
         int nxt = r2.nextInt(2); 
         if(nxt==0){ 
          Intent i1= new Intent(Loadscreen.this,Game.class); 
          i1.putExtra("music", music); 
          i1.putExtra("sound", sound); 
          i1.putExtra("max",max); 
          i1.putExtra("candymax", candymax); 
          startActivity(i1); 
          Loadscreen.this.finish(); 
         } 
         else{ 
          Intent i1= new Intent(Loadscreen.this,Game01.class); 
          i1.putExtra("music", music); 
          i1.putExtra("sound", sound); 
          i1.putExtra("max",max); 
          i1.putExtra("candymax", candymax); 
          startActivity(i1); 
          Loadscreen.this.finish(); 
         } 
        } 
        else{ 
         int time=2000; 
         Toast.makeText(Loadscreen.this, "Enter a valid level", time).show(); 
        } 
       } 
      } 
     }); 
     iv2= (ImageView) findViewById(R.id.imageView2); 
     iv2.setOnClickListener(new OnClickListener() { 
      public void onClick(View arg0) { 
       AlertDialog.Builder build= new AlertDialog.Builder(Loadscreen.this); 
       build.setMessage("Are you sure you want to quit the game?"); 
       build.setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface arg0, int arg1) { 
         Loadscreen.this.finish(); 
        } 
       }); 
       build.setNegativeButton("No", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface arg0, int arg1) { 
         arg0.cancel(); 
        } 
       }); 
       build.setCancelable(false); 
       build.show(); 
      } 
     }); 

    } 

它示出了在线路IV2 = findViewbyId(R.id.imageview2)的误差表示Classcast异常。 请提出这个代码有什么问题?由于

+1

是imageView2的ImageView还是TextView?帖子R.layout.activity_loadscreen – Blackbelt

+1

你可以发布layout.activity_loadscreen吗? –

回答

0

这是由于这些原因之一:

1)无论你取名字中的一个名为TextViewR.id.imageView2,因此您的findViewById()方法返回它,它不能被铸造成ImageView(这是合乎逻辑)

2)要么在项目中有另一个R.id.imageView2,这是TextView,同样在这里。请记住,id在您的项目中不必是唯一的,但可能会发生类似这样的事情。

相关问题