2013-01-16 30 views
0

我有一个活动,在使用滑动菜单库时,我尝试创建2个滑动菜单。 这是我试过的代码:将2个滑动菜单添加到活动

FragmentTransaction t = this.getSupportFragmentManager().beginTransaction(); 
    menu = new SlidingMenu(this); 
    menu.setMode(SlidingMenu.RIGHT); 
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); 
    menu.setShadowWidthRes(R.dimen.shadow_width); 
    menu.setShadowDrawable(R.drawable.shadow); 
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    menu.setFadeDegree(0.35f); 
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 
    menu.setMenu(R.layout.tutorial_layout); 
    rightSlide = new HelpFragment(); 
    t.replace(R.id.slidingList2, rightSlide); 
    t.commit(); 
    menu.setSecondaryMenu(R.layout.log_history); 
    leftSlide = new LogHistory(); 
    t.replace(R.id.loghistorycon, leftSlide); 
    t.commit(); 

现在我得到一个错误ANR,和logcat中说,该FragmentTransaction T,已经COMMITED。 我看着从例如:github.com/jfeinstein10/SlidingMenu,它可以让他做2犯的:

setContentView(R.layout.content_frame); 
    getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.content_frame, new SampleListFragment()) 
    .commit(); 

    getSlidingMenu().setSecondaryMenu(R.layout.menu_frame_two); 
    getSlidingMenu().setSecondaryShadowDrawable(R.drawable.shadowright); 
    getSupportFragmentManager() 
    .beginTransaction() 
    .replace(R.id.menu_frame_two, new SampleListFragment()) 
    .commit(); 

我在做什么错?我实在看不出区别

+0

看到这个http://stackoverflow.com/a/14909076/967548 –

回答

1

更改您上面的代码如下

FragmentTransaction t = this.getSupportFragmentManager().beginTransaction(); 
    menu = new SlidingMenu(this); 
    menu.setMode(SlidingMenu.RIGHT); 
    menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); 
    menu.setShadowWidthRes(R.dimen.shadow_width); 
    menu.setShadowDrawable(R.drawable.shadow); 
    menu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    menu.setFadeDegree(0.35f); 
    menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT); 
    menu.setMenu(R.layout.tutorial_layout); 
    rightSlide = new HelpFragment(); 
    t.replace(R.id.slidingList2, rightSlide); 
    t.commit(); 
    t = this.getSupportFragmentManager().beginTransaction(); 
    menu.setSecondaryMenu(R.layout.log_history); 
    leftSlide = new LogHistory(); 
    t.replace(R.id.loghistorycon, leftSlide); 
    t.commit(); 

对于FragmentTransaction,你只能有一个承诺。在你的代码中,你创建了一个FragmentTransaction对象,并且为rightSlide调用了一次提交。所以t不再可用于交易。因此,您已经创建了另一个FragmentTransaction,正如我在上面的代码中所做的那样。我希望这会对你有用。

+0

感谢,这对我来说是一个巨大的进步,它有效,但现在我还有另一个问题。我有两个按钮,每个菜单一个,如何选择哪一个应打开第一个按钮,然后是第二个按钮? 我试过了: menu.showMenu(); menu.toggle();第一个和第二个: menu.showSecondaryMenu(); menu.toggle(); –

+0

@rosualin你的第二个问题很混乱。但会说你回答。当您有两个按钮时,将一个滑块添加到一个按钮,即处理第一个按钮点击第一个滑动菜单,第二个点击第二个滑动菜单。 – TNR

+0

是的,我明白了,我做了clickListeners的按钮,我怎样才能选择这两个滑动菜单中的哪一个打开menu.toggle()? –

1

@LLL 下面的代码是正常工作到我。我希望,它帮助ü更多...

SlidingMenu slidingMenu = getSlidingMenu();slidingMenu.setMode(SlidingMenu.LEFT_RIGHT); 
    slidingMenu.setShadowWidthRes(R.dimen.shadow_width); 
    slidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); 
    slidingMenu.setFadeDegree(0.35f); 
    slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE); 
    slidingMenu.setMenu(R.layout.profile); 
    slidingMenu.setSecondaryMenu(R.layout.nextactivity); 
    Button csButton=(Button)findViewById(R.id.txtx); 
    inside csButton onclick listener just need to call slidingMenu.showSecondaryMenu(); 
    and, Button csButton1=(Button)findViewById(R.id.button1); 
    inside csButton1 onclick listener just need to call slidingMenu.showMenu(); 
相关问题