开关case语句导致致命的错误在我的Andr​​oid应用程序 [英] Switch case statements causes fatal error in my Android App

查看:124
本文介绍了开关case语句导致致命的错误在我的Andr​​oid应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我建立使用一堆开关语句来视图之间切换一个Android应用程序。一切都进行得很顺利,直到我说,导致致命的错误,当应用程序正在启动的情况下块。的情况下,通过在XML的onClick语句调用。例违规块实际上是做工精细语句块的一部分。任何人都可以看到我错过了什么?是什么造成了致命的错误?我包括破code的片段,并与logcat的文件一起工作code。

I am building an Android app using a pile of switch statements to switch between views. Everything was going fine until I added a block of cases that cause a fatal error when the app is starting up. The cases are called by onClick statements in the XML. The offending block of cases is actually part of a block of statements that work fine. Can anyone see what I'm missing? What's causing the fatal error? I'm including snippets of the broken code and working code along with the logCat file.

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

在XML的例子,这将是调用断开关情况:

Example of the XML that would be calling the broken switch cases:

<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的一个片段:

Here's a snippet of the broken 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;

这里的code,从同一块工作的一个片段:

Here's a snippet of the code that works from the same block:

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:无效的切换目标

As you can see, I think, the two blocks of switch cases are the same. The part that I think is the important clue is in the logCat: VFY: invalid switch target.

如果您需要了解更多信息,请让我知道。在此先感谢您的帮助!

If you need more information please let me know. Thanks in advance for the help!

推荐答案

原来,有太多的情况下,在switch语句。我不知道有一个极限,但我想是有的。我打破了switch语句为独立的方法和做的伎俩。谢谢大家对您的建议!

It turned out that there were too many cases in the switch statement. I didn't know there was a limit, but I guess there is. I broke the switch statements into separate methods and that did the trick. Thanks everyone for your suggestions!

这篇关于开关case语句导致致命的错误在我的Andr​​oid应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆