NoClassDefFoundError在GenyMotion模拟器中启动应用程序时出现异常

时间:2015-11-21 20:24:17

标签: java android genymotion

我想在另一台设备上测试我的代码而不是物理代码,所以我在GenyMotion模拟器中使用三星Galaxy S3(API 18)启动了应用程序,但它在我的类“SlidingMenuUtil”中不断抛出NoClassDefFoundError异常(a定制的抽屉菜单),由我的MainActivity启动时调用。

以下是我在MainActivity中的onCreate的代码:

    @Bind(R.id.viewContentFullScreen) RelativeLayout viewContentFullScreen;
@Bind(R.id.viewContentTopBar) RelativeLayout viewContentTopBar;
@Bind(R.id.topBarWrapper) RelativeLayout topbarView;
private ViewContainer viewContainer;
private SlidingMenuUtil leftMenu;
private Bundle bundle;
private MessageHandler messageHandler;
private GoBackFunction currentGoBackFunction;
private CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    bundle = savedInstanceState;
    setContentView(R.layout.activity_main);

    leftMenu = new SlidingMenuUtil(this, SlidingMenuUtil.MenuType.LEFT, R.layout.drawer_menu, (int)(LayoutUtil.getScreenWidth(this) * 0.75), false);
    populateMenu();

    ButterKnife.bind(this);
    messageHandler = new MessageHandler(this, findViewById(R.id.spinner));
    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();

}

问题出现在SlidingMenuUtil类的行上:67。这是该类的构造函数:

    public SlidingMenuUtil(Activity activity, MenuType menuType, int menuLayout, int shownMenuWidth, boolean fadeEffectOn) {
    this.activity        = activity;
    this.menuType        = menuType;
    this.shownMenuWidth  = shownMenuWidth;
    this.fadeEffectOn    = fadeEffectOn;

    this.screenWidth     = LayoutUtil.getScreenWidth(activity);
    this.rootView        = (ViewGroup)((ViewGroup)activity.findViewById(android.R.id.content)).getChildAt(0);
    this.activityWrapper = new RelativeLayout(activity);
    this.activityWrapper.setLayoutParams(this.rootView.getLayoutParams());

    this.overlay = new RelativeLayout(activity);
    this.overlay.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
    this.overlay.setBackgroundColor(Color.parseColor("#000000"));
    this.overlay.setAlpha(0.0F);
    this.overlay.setVisibility(View.GONE);
    this.overlay.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            if (menuOpen) {
                toggle(new ToggleMenu() {
                    @Override
                    public void animationDone() {

                    }
                });
            }
        }
    });
    this.rootView.addView(this.overlay);

    this.menu = (LinearLayout)activity.getLayoutInflater().inflate(menuLayout, (ViewGroup) null, false);
    this.menu.setLayoutParams(new ViewGroup.LayoutParams(shownMenuWidth, -1));
    if (menuType == MenuType.LEFT) {
        this.menu.setTranslationX((float)(-shownMenuWidth));
    } else {
        this.menu.setTranslationX((float)(screenWidth));
    }
    this.rootView.addView(this.menu);

    this.menuOpen = false;
}

林67是:

this.overlay.setOnClickListener(new View.OnClickListener() { 

如前所述,问题只发生在模拟器中。

这是日志:

812-812/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: nightout.dk.nightoutandroid.utils.SlidingMenuUtil$1
        at nightout.dk.nightoutandroid.utils.SlidingMenuUtil.<init>(SlidingMenuUtil.java:67)
        at nightout.dk.nightoutandroid.MainActivity.onCreate(MainActivity.java:40)
        at android.app.Activity.performCreate(Activity.java:5133)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
        at android.app.ActivityThread.access$600(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5103)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:525)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
        at dalvik.system.NativeStart.main(Native Method)

我希望somone可以帮助我。 任何帮助都将得到很多赞赏

0 个答案:

没有答案