Rohan
Rohan

Reputation: 188

Sliding menu in android,misbehaviour

I am using Sliding menu from library jfeinstein, i have two sliding menu 'menuLeft' 'menuRight' in my activity one from left side and one from right,i have toggle buttons for respective sliding menu,how ever if menuLeft is open and if i slide from right to left in order to close menuLeft ,menuRiht also gets opened,what can be the solution to avoid this misbehaviour here's my activity which contains SlidingMenu's

public class ChatListActivity extends SherlockActivity {

    private SlidingMenu menuLeft;
    private SlidingMenu menuRight;
    private Button btnSliderLeftToggle;
    private Button btnSliderRightToggle;
    private ListView lvSliderLeft;
    private ListView lvSliderRight;
    private int width;
    private int height;
    private DBContacts db;

    @Override
        protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.chatlist_layout);
        db = new DBContacts(this);

        WindowManager wmanager = (WindowManager) getSystemService(WINDOW_SERVICE);
        Display display = wmanager.getDefaultDisplay();
        width = display.getWidth();
        height = display.getHeight();
        menuLeft = new SlidingMenu(this);
        menuRight = new SlidingMenu(this);
        initLeftSlider();
        initRightSlider();
        btnSliderLeftToggle = (Button) findViewById(R.id.mnuSlidingleftToggle);
        btnSliderLeftToggle.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v)
        {
            ChatListActivity.this.menuLeft.toggle();
        }
    });

    btnSliderRightToggle = (Button) findViewById(R.id.mnuSlidingRightToggle);
    btnSliderRightToggle.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            ChatListActivity.this.menuRight.toggle();

        }
    });

    menuLeft.setOnOpenedListener(new OnOpenedListener()
    {

        @Override
        public void onOpened()
        {
            lvSliderLeft = (ListView) findViewById(R.id.lvSlidingmenuLeft);
            MySLidingMenuLeftAdapter adapter = new MySLidingMenuLeftAdapter(ChatListActivity.this,
                    R.layout.crow_listview_lvslidingleft_chatlist);
            lvSliderLeft.setAdapter(adapter);
        }
    });

    menuRight.setOnOpenedListener(new OnOpenedListener()
    {

        @Override
        public void onOpened()
        {
            lvSliderRight = (ListView) findViewById(R.id.lvSlidingmenuRight);
            String column[] = new String[] { DBContacts.USERNAME};
            int[] viewId = { R.id.txtContactName};
            Cursor dataBaseCursor = db.getAllContacts();
            MySLidingMenuRightAdapter customContactListAdapter = new MySLidingMenuRightAdapter(
                    ChatListActivity.this, R.layout.crow_lvslidingmenu_right_chatlist, dataBaseCursor, column,
                    viewId, 0);
            lvSliderRight.setAdapter(customContactListAdapter);
        }
    });

}

private void initRightSlider()
{

    menuRight.setMode(SlidingMenu.RIGHT);
    menuRight.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    menuRight.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menuRight.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    menuRight.setMenu(R.layout.sliding_menu_chatlist_right);
    menuRight.setFadeDegree(0.35f);

}

private void initLeftSlider()
{

    menuLeft.setMode(SlidingMenu.LEFT);
    menuLeft.setBehindOffsetRes(R.dimen.slidingmenu_offset);
    menuLeft.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
    menuLeft.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
    menuLeft.setMenu(R.layout.sliding_menu_chatlist_left);
    menuLeft.setFadeDegree(0.35f);

}

@Override
public void onBackPressed()
{
    super.onBackPressed();
    System.exit(0);
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    menu.add("Refresh");
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    new SendNativeContacts(this).execute();
    return true;
}
}

Upvotes: 0

Views: 744

Answers (1)

Siddhesh
Siddhesh

Reputation: 1380

I have never faced this issue when i used both Left and Right SlidingMenu but for your problem you can have look at SlidingMenu Issues and you can try this solution for your problem. It may help you.

EDIT :

try this

You will need a patch which calls onOpened and onClosed methods for right menu it may have been included in latest code. Write logs to check method calls.

slidingMenuLeft.setOnOpenedListener(new OnOpenedListener() {

            @Override
            public void onOpened(int pos) {
               slidingMenuRight.setSlidingEnabled(false);

            }
});

slidingMenuLeft.setOnClosedListener(new OnClosedListener() {

            @Override
            public void onClosed() {
                slidingMenuRight.setSlidingEnabled(true);

            }
        });

slidingMenuRight.setOnOpenedListener(new OnOpenedListener() {

            @Override
            public void onOpened(int pos) {
               slidingMenuLeft.setSlidingEnabled(false);

            }
});

slidingMenuRight.setOnClosedListener(new OnClosedListener() {

            @Override
            public void onClosed() {
                slidingMenuLeft.setSlidingEnabled(true);

            }
        });

Upvotes: 1

Related Questions