我正在构建一个Android应用程序,使用一堆switch语句在视图之间切换。一切都很顺利,直到我添加了一些案例,导致应用程序启动时发生致命错误。这些案例由XML中的onClick语句调用。有争议的案例块实际上是可以正常工作的一组语句的一部分。任何人都可以看到我失踪的东西吗?什么导致致命的错误?我包含了破碎的代码和工作代码以及logCat文件的片段。该XML的Switch case语句在我的Android应用程序中导致致命错误
05-17 01:48:01.931: INFO/System.out(270): debugger has settled (1381)
05-17 01:48:02.341: WARN/dalvikvm(270): VFY: invalid switch target 7170 (-> 0x1c0b) at 0x9[0]
05-17 01:48:02.351: WARN/dalvikvm(270): VFY: rejected Lcom/findthway/main;.nextLayout (Landroid/view/View;)V
05-17 01:48:02.351: WARN/dalvikvm(270): Verifier rejected class Lcom/findthway/main;
05-17 01:48:02.351: WARN/dalvikvm(270): Class init failed in newInstance call (Lcom/findthway/main;)
05-17 01:48:03.031: INFO/ActivityManager(67): Displayed activity com.android.launcher/com.android.launcher2.Launcher: 50893 ms (total 50893 ms)
05-17 01:48:08.001: WARN/ActivityManager(67): Launch timeout has expired, giving up wake lock!
05-17 01:48:08.751: WARN/ActivityManager(67): Activity idle timeout for HistoryRecord{43eda500 com.findthway/.main}
05-17 01:52:41.531: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 01:57:41.551: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:02:41.576: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:07:41.641: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:08:45.831: DEBUG/dalvikvm(67): GC_FOR_MALLOC freed 15592 objects/665856 bytes in 160ms
05-17 02:12:41.695: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:16:30.392: DEBUG/dalvikvm(67): GC_FOR_MALLOC freed 4697 objects/200928 bytes in 108ms
05-17 02:17:41.716: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:22:41.745: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:27:41.801: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:32:41.812: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:37:41.851: DEBUG/SntpClient(67): request time failed: java.net.SocketException: Address family not supported by protocol
05-17 02:41:00.341: DEBUG/dalvikvm(67): GC_FOR_MALLOC freed 12690 objects/520224 bytes in 235ms
的例子,将调用断开关情况:
<RelativeLayout android:id="@+id/level07_layout00"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/vlayoutup"
android:visibility="gone">
<ImageButton android:id="@+id/level07_closeButton00"
android:layout_height="wrap_content"
android:background="@drawable/close"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:onClick="closetomain">
</ImageButton>
<ImageButton android:id="@+id/level07_leftButton00"
android:layout_height="wrap_content"
android:background="@drawable/node"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="2dp"
android:layout_marginLeft="135dp"
android:onClick="nextLayout">
</ImageButton>
<ImageButton android:id="@+id/level07_rightButton00"
android:layout_height="wrap_content"
android:background="@drawable/node"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="2dp"
android:layout_marginLeft="340dp"
android:onClick="nextLayout">
</ImageButton>
<ImageView android:id="@+id/level07_beginButton00"
android:layout_height="wrap_content"
android:background="@drawable/beginbutton"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="2dp"
android:layout_marginLeft="235dp">
</ImageView>
<ImageView android:id="@+id/level07_ImageView00"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="5dp"
android:layout_marginLeft="325dp"
android:background="@drawable/rocket">
</ImageView>
</RelativeLayout>
<RelativeLayout android:id="@+id/level07_layout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/vlayoutup"
android:visibility="gone">
<ImageButton android:id="@+id/level07_closeButton01"
android:layout_height="wrap_content"
android:background="@drawable/close"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginLeft="10dp"
android:layout_marginBottom="10dp"
android:onClick="closetomain">
</ImageButton>
<ImageButton android:id="@+id/level07_leftButton01"
android:layout_height="wrap_content"
android:background="@drawable/node"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="2dp"
android:layout_marginLeft="135dp"
android:onClick="nextLayout">
</ImageButton>
<ImageButton android:id="@+id/level07_rightButton01"
android:layout_height="wrap_content"
android:background="@drawable/node"
android:layout_width="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="2dp"
android:layout_marginLeft="340dp"
android:onClick="nextLayout">
</ImageButton>
<ImageButton android:id="@+id/level07_backButton01"
android:layout_height="wrap_content"
android:background="@drawable/backlevel"
android:layout_width="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="2dp"
android:layout_marginLeft="235dp"
android:onClick="prevLayout">
</ImageButton>
</RelativeLayout>
这里是破的java的一个片段:
case R.id.level07_backButton01:
RelativeLayout bB017 = (RelativeLayout)findViewById(R.id.level07_layout00);
bB017.setVisibility(View.VISIBLE);
RelativeLayout bB017b = (RelativeLayout)findViewById(R.id.level07_layout01);
bB017b.setVisibility(View.GONE);
break;
case R.id.level07_backButton02:
RelativeLayout bB027b = (RelativeLayout)findViewById(R.id.level07_layout01);
bB027b.setVisibility(View.VISIBLE);
RelativeLayout bB027 = (RelativeLayout)findViewById(R.id.level07_layout02);
bB027.setVisibility(View.GONE);
break;
case R.id.level07_backButton03:
RelativeLayout bB037 = (RelativeLayout)findViewById(R.id.level07_layout02);
bB037.setVisibility(View.VISIBLE);
RelativeLayout bB037b = (RelativeLayout)findViewById(R.id.level07_layout03);
bB037b.setVisibility(View.GONE);
break;
下面是作品的代码片段来自同一个块:
case R.id.level07_backButton16:
RelativeLayout bB167 = (RelativeLayout)findViewById(R.id.level07_layout15);
bB167.setVisibility(View.VISIBLE);
RelativeLayout bB167b = (RelativeLayout)findViewById(R.id.level07_layout16);
bB167b.setVisibility(View.GONE);
break;
case R.id.level07_backButton17:
RelativeLayout bB177 = (RelativeLayout)findViewById(R.id.level07_layout13);
bB177.setVisibility(View.VISIBLE);
RelativeLayout bB177b = (RelativeLayout)findViewById(R.id.level07_layout17);
bB177b.setVisibility(View.GONE);
break;
case R.id.level07_backButton18:
RelativeLayout bB187 = (RelativeLayout)findViewById(R.id.level07_layout17);
bB187.setVisibility(View.VISIBLE);
RelativeLayout bB187b = (RelativeLayout)findViewById(R.id.level07_layout18);
bB187b.setVisibility(View.GONE);
break;
正如你所看到的,我认为,两个开关盒的块是相同的。我认为的一个重要线索就是在logCat中:VFY:无效的切换目标。
如果您需要了解更多信息,请让我知道。先谢谢您的帮助!
我看不到backButton02或03的定义。 (或后来的16/17/18 - 是整个XML? – jkhouw1 2011-05-17 03:26:29
这不是整个XML,只是一个例子,它几乎是一堆类似的块,但它们都具有相同的imageButtons用于后退,关闭和下一个。 – Bret 2011-05-17 04:04:22
你在这个XML中有多少个视图?多少个布局?假设你没有在Button02或Button03上的xml中输入错误,是否有可能超过了#of视图或布局的限制? – jkhouw1 2011-05-17 09:37:52