关于使用SlidingMenu时踩过的几个坑~~~

来源:互联网 发布:考研数学网络课程 编辑:程序博客网 时间:2024/06/05 20:11

第一个错误:

Caused by: java.lang.IllegalStateException: Both setBehindContentView must be called in onCreate in addition to setContentView。

at com.jeremyfeinstein.slidingmenu.lib.app.SlidingActivityHelper.onPostCreate(SlidingActivityHelper.java:55)

at com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity.onPostCreate(SlidingFragmentActivity.java:31)

at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1187)

  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2537)

at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2659)

at android.app.ActivityThread.access$1000(ActivityThread.java:169)

at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1467)

解决方案:出现此错误的原因是,你如果想让侧滑菜单SlidingMenu依赖fragmnent的形式滑出,就需要继承自slidingFragmentActivity,然后我却忘记写setBehindContentView(R.layout.left_menu_frame);这个方法,所以会报错!!!

所以,我这里大概列举了上述情况下应该贴加的Demo,借鉴一下:

    SlidingLeftFragment slidingLeftFragment = new SlidingLeftFragment();
    slidingMenu = getSlidingMenu();
    setBehindContentView(R.layout.left_menu_frame);
    slidingMenu.setMode(SlidingMenu.LEFT);// 设置左右滑菜单
    slidingMenu.setTouchModeAbove(SlidingMenu.SLIDING_WINDOW);// 设置要使菜单滑动,触碰屏幕的范围
    // slidingMenuView.setTouchModeBehind(SlidingMenu.SLIDING_CONTENT);//设置了这个会获取不到菜单里面的焦点,所以先注释掉
    slidingMenu.setShadowWidthRes(R.dimen.shadow_width);// 设置阴影图片的宽度
    slidingMenu.setShadowDrawable(R.drawable.shadow);// 设置阴影图片
    slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset);// SlidingMenu划出时主页面显示的剩余宽度
    slidingMenu.setFadeDegree(0.35F);// SlidingMenu滑动时的渐变程度
    getSupportFragmentManager().beginTransaction().replace(R.id.id_left_menu_frame, slidingLeftFragment).commit();
    

第二个错误:

Caused by: java.lang.IllegalStateException: This SlidingMenu appears to already be attached

 at com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.attachToActivity(SlidingMenu.java:271)
 at com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.attachToActivity(SlidingMenu.java:256)
 at com.jeremyfeinstein.slidingmenu.lib.app.SlidingActivityHelper.onPostCreate(SlidingActivityHelper.java:61)
 at com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity.onPostCreate(SlidingFragmentActivity.java:31)
at android.app.Instrumentation.callActivityOnPostCreate(Instrumentation.java:1187)
 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2537)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2659)
at android.app.ActivityThread.access$1000(ActivityThread.java:169)
解决方案:出现这种错误是因为slidingmenu前面已经依附在对应的fragment上了,所以应该把
slidingMenu.attachToActivity(activity, SlidingMenu.SLIDING_WINDOW);这句Demo注掉!!!

第三个错误:

java.lang.ClassCastException: com.gang.hoperun.quicknews.MainActivity cannot be cast to com.gang.hoperun.quicknews.BaseActivity

 at com.gang.hoperun.fragment.NewsFragment.enterDetailActivity(NewsFragment.java:222)
 at com.gang.hoperun.fragment.NewsFragment.onItemClick(NewsFragment.java:210)
 at android.widget.AdapterView.performItemClick(AdapterView.java:305)
 at android.widget.AbsListView.performItemClick(AbsListView.java:1179)
 at android.widget.AbsListView$PerformClick.run(AbsListView.java:3093)
at android.widget.AbsListView$3.run(AbsListView.java:3922)
 at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:159)
解决方案:出现这种错误是因为:activityA跳转到activityB的过程中,因为activityA继承自slidingActivity或者slidingFragmentActivity,而activityB却继承自AppComcatActivity,所以才导致这种错误。
该如何解决就再不用多说了吧,好,就到这里了!!!


下面列出一些关于slidingmenu的一些属性方法:

//设置侧滑菜单的位置,可选值LEFT , RIGHT , LEFT_RIGHT (两边都有菜单时设置)
menu.setMode(SlidingMenu.LEFT_RIGHT);
// 设置触摸屏幕的模式,可选只MARGIN , CONTENT
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
//根据dimension资源文件的ID来设置阴影的宽度
menu.setShadowWidthRes(R.dimen.shadow_width);
//根据资源文件ID来设置滑动菜单的阴影效果
menu.setShadowDrawable(R.drawable.shadow);
// 这两个都是设置滑动菜单视图的宽度,二选一
//设置SlidingMenu离屏幕的偏移量
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
//设置宽度
menu.setBehindWidth()
// 设置渐入渐出效果的值
menu.setFadeDegree(0.35f);
//设置SlidingMenu与下方视图的移动的速度比,当为1时同时移动,取值0-1
menu.setBehindScrollScale(1.0f);
//设置二级菜单的阴影效果
menu.setSecondaryShadowDrawable(R.drawable.shadow);
//设置右边(二级)侧滑菜单
menu.setSecondaryMenu(R.layout.right_menu_frame);
//为侧滑菜单设置布局
menu.setMenu(R.layout.leftmenu);
//把滑动菜单添加进所有的Activity中,可选值SLIDING_CONTENT , SLIDING_WINDOW
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
0 0
原创粉丝点击