【问题标题】:android: java.lang.Object[] cannot be cast to android.widget.Button[]android: java.lang.Object[] 不能转换为 android.widget.Button[]
【发布时间】:2013-11-30 17:05:24
【问题描述】:

声明:

   // collections of spots (Buttons) and Animators 
   private final Queue<Button> spots = new ConcurrentLinkedQueue<Button>(); 

添加新地点:

   public void addNewSpot()
   {
       int x = random.nextInt(viewWidth - SPOT_DIAMETER);
       int y = 0 - SPOT_DIAMETER;                      

       int x2 = x;
       int y2 = (viewHeight);

      // create new spot
      final Button spot = (Button) layoutInflater.inflate(R.layout.untouched, null);
      spot.setPadding(0,0,0,0);
      spots.add(spot);

检查所有充气点

  public void Check_all_Spot(int BOY_X)
   {  
       int [] lowest_x;
       int [] lowest_y;
       int apple_shown_length =0;
       Button [] apple_shown; 

       String text_x ="";
       String text_y = "";

       if (!spots.isEmpty())
       {
           apple_shown = (Button[]) spots.toArray(); //LINE 684
           apple_shown_length = apple_shown.length;
       }

       lowest_x =  new int [apple_shown_length];
       lowest_y =  new int [apple_shown_length];
       apple_shown =  new Button [apple_shown_length];

       for (int w = 0; w < apple_shown_length ; ++w)
       {
           lowest_x[w] = (int) apple_shown[w].getX();
           lowest_y[w] = (int) apple_shown[w].getY();              
           text_x = text_x+ lowest_x[w];
           text_y = text_y+ lowest_y[w];            
       }

       image_boy.setText("lowest spot\n"+text_x+"\n"+text_y);
   }

Logcat:

12-01 00:57:12.760: E/AndroidRuntime(14706): FATAL EXCEPTION: main
12-01 00:57:12.760: E/AndroidRuntime(14706): java.lang.ClassCastException: java.lang.Object[] cannot be cast to android.widget.Button[]
12-01 00:57:12.760: E/AndroidRuntime(14706):    at com.abc.abc.Game_collecting_view.Check_all_Spot(Game_collecting_view.java:684)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at com.abc.abc.Game_collecting_view.Increment(Game_collecting_view.java:777)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at com.abc.abc.Game_collecting_view$RptUpdater.run(Game_collecting_view.java:754)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at android.os.Handler.handleCallback(Handler.java:615)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at android.os.Looper.loop(Looper.java:137)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at android.app.ActivityThread.main(ActivityThread.java:4898)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at java.lang.reflect.Method.invokeNative(Native Method)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at java.lang.reflect.Method.invoke(Method.java:511)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
12-01 00:57:12.760: E/AndroidRuntime(14706):    at dalvik.system.NativeStart.main(Native Method)

问题:

我想获取屏幕中所有点的 x 和 y 坐标。

然而,logcat 报告 java.lang.Object[] cannot be cast to android.widget.Button[]。如何纠正错误?谢谢!

【问题讨论】:

    标签: android arrays object button


    【解决方案1】:
               apple_shown = (Button[]) spots.toArray(); //LINE 684
    

    apple_show -> 输入按钮

    spots -> 类型队列

    您正在尝试在 Button 中投射点。这是不可能的

    【讨论】:

      【解决方案2】:

      我已经研究了一些,它似乎以这种方式工作:

         public void Check_all_Spot(int BOY_X)
         {  
             int [] lowest_x;
             int [] lowest_y;
             int apple_shown_length =spots.size();
             Button [] apple_shown = null; 
      
             String text_x ="";
             String text_y = "";
      
             if (!spots.isEmpty())
             {
                 apple_shown = spots.toArray(new Button[apple_shown_length]);
             }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-11
        • 1970-01-01
        • 2018-02-09
        • 1970-01-01
        • 2017-12-31
        相关资源
        最近更新 更多