如何解决这个错误“无法投射java.lang.Integer int”

问题描述:

我创建了两组ImageViews说ViewGroup A(有26)和B(有26);命名为 'A', 'B' ......... 'Z' 即图像的如何解决这个错误“无法投射java.lang.Integer int”

&

也26图像具有图像

第一步:我负载26倍的图像中随机到B组(26个Imageviews) 并且在装载在我的ImageView标签(int值)设定的图像的名称,即97 Image'a”

第二步:当用户点击以正确的顺序ABC图像.. Z,图像将从B组移动到A组Imageview 1,2 .... 26 ..

在这里,下面代码执行第二步骤2 .....

注: currentText = 'A'

  // this method called in image onclick 
    public void ImageClicked(View view) { 
    int nameFromImagetag; 
    char tag; 
    ImageView ClickedImage = (ImageView) view; 
    ImageView ImageViewInGroupA = new ImageView(MainActivity.this); 
    nameFromImagetag = (int) ClickedImage.getTag(); 
    tag=(char) nameFromImagetag; 


    if (tag == currentText) { 
     ImageViewInGroupA = (ImageView) findViewById(ImageViewGroupAIdList[PointerToGroupA]); 
      //Next line pops up error "can not cast java.lang.Integer to int" 


      ImageViewInGroupA.setImageResource((int) ClickedImage.getTag()); 
     ClickedImage.setImageBitmap(null); 
     ClickedImage.setTag(null); 
     ClickedImage.setClickable(false); 
     currentText = (char) ((int) currentText + 1); 
     PointerToGroupA = PointerToGroupA + 1; 
    } 

}

9月4日至5日:55:22.674 5168-5168 /com.example.android.myabc E/Trace:打开跟踪文件时出错:Permission denied(13) 04-05 09:55:28.074 5168-5168/com.example.android.myabc E/dalvikvm:找不到类'android.graphics.drawable.RippleDrawable',从方法android.support.v7.widget.AppCompatImageHelper.hasOverlappingRendering引用 04-05 09:56:36.444 5168-5168/com.example.android.myabc E/AndroidRuntime:致命异常:主要 java.lang.IllegalStateException:无法执行android:onClick at android.support.v7的方法.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) at android.view.View.performClick(View.java:4084) at android.view.View $ PerformClick.run(View.java:16966) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android .app.ActivityThread.main(ACTI vityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) 导致:java。 lang.reflect.InvocationTargetException at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at android.support.v7.app.AppCompatViewInflater $ Decla在android.view.View上的android.view.View $ PerformClick.run(View.java:16966) 处的android.view.View.performClick(View.java:4084) 处的redOnClickListener.onClick(AppCompatViewInflater.java:288) 。 Handler.handleCallback(Handler.java:615) 在android.os.Handler.dispatchMessage(Handler.java:92) 在android.os.Looper.loop(Looper.java:137) 在android.app.ActivityThread。 main(ActivityThread.java:4745) at java.lang.reflect.Method。invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android .internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) 引起:android.content.res.Resources $ NotFoundException:资源ID#0x61 在android。 content.res.Resources.getValue(Resources.java:1013) at android.support.v7.widget.ResourcesWrapper.getValue(ResourcesWrapper.java:204) at android.support.v7.widget.AppCompatDrawableManager.loadDrawableFromDelegates(AppC ompatDrawableManager.java:332) 在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:197) 在android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:190) 在机器人。 support.v7.content.res.AppCompatResources.getDrawable(AppCompatResources.java:100) at android.support.v7.widget.AppCompatImageHelper.setImageResource(AppCompatImageHelper.java:73) at android.support.v7.widget.AppCompatImageView。 setImageResource(AppCompatImageView.java:81) at com.example.android.myabc.MainActivity.ImageClicked(MainActivity.java:60) at java.lang.reflect.Method.invokeNative(Native M ethod) 在java.lang.reflect.Method.invoke(Method.java:511) 在android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 在android.view.View。在android.os.Handler上的android.os.Handler.handleCallback(Handler.java:615) 上执行ClickClick(View.java:4084) at android.view.View $ PerformClick.run(View.java:16966) 。 dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method。 invok eNative(本机方法) 在java.lang.reflect.Method.invoke(Method.java:511) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786) 在com.android (内部方法) 04-05 09:56:37.234 1503-1503/com.android.launcher E/emuglGLESv2_enc:检测到边界外的顶点属性索引。跳过相应的顶点属性。

+0

[如何将列表转换为Java中的int \ [\]?](http://*.com/questions/960431/how-to-convert-listinteger-to-int-in -java) –

+0

@Murali,你没有分享* exact *错误信息。复制并粘贴它。 – chrylis

问题是您的标记是Integer对象而不是int原语。此代码检查的对象是正确的类型和得到的int值出来的整数,如果它是有效的(否则为0):

Object obj = ClickedImage.getTag(); 
nameFromImagetag = (obj instanceof Integer) ? ((Integer)obj).intValue() : 0; 
+0

'Integer'应该自动取消装箱到'int'。 – chrylis

+0

@chrylis你是对的。我用'intValue()'来解释到底发生了什么。 'nameFromImagetag =(obj instanceof Integer)? (整数)obj:0;'达到相同的结果,但不太清楚。 –

Modified code below! ..........Hey Its working king ing ng.g..:) 

请忽略的下脚料.... :)

public void ImageClicked(View view) { 
    int nameFromImagetag,id=-1; 
    Integer MyInt=null; 
    char tag; 
    Object MyObj=null; //changed 
    ImageView ClickedImage = (ImageView) view;   
    ImageView ImageViewInGroupA = new ImageView(MainActivity.this); 
    findViewById(ImageViewGroupBIdList[PointerToGroupA]); 
    nameFromImagetag = (int) ClickedImage.getTag(); 
    tag=(char) nameFromImagetag; 
    if (tag == currentText) { 
     ImageViewInGroupA = (ImageView) findViewById(ImageViewGroupAIdList[PointerToGroupA]); 


     MyObj=ClickedImage.getTag(); //changed 
     id=((Integer)MyObj).intValue(); //changed 

     id = getResources().getIdentifier(String.valueOf((char) id), "drawable", getPackageName()); //changed 

     ImageViewInGroupA.setImageResource(id); 
     ClickedImage.setImageBitmap(null); 
     ClickedImage.setTag(null); 
     ClickedImage.setClickable(false); 
     currentText = (char) ((int) currentText + 1); 
     PointerToGroupA = PointerToGroupA + 1; 
    } 

} 
+0

谢谢Doron Yakovlev-Golani和所有:) – Murali