2017-04-04 103 views
-1

我創建了兩組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://stackoverflow.com/questions/960431/how-to-convert-listinteger-to-int-in -java) –

+0

@Murali,你沒有分享* exact *錯誤信息。複製並粘貼它。 – chrylis

回答

0

問題是您的標記是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;'達到相同的結果,但不太清楚。 –

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