2

I'm currently trying to implement a Navigation Drawer into my Application. For that i want the Drawer to be opened when the activity is started. This is my onCreate:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_master);
    isInLandscapeMode = getResources().getBoolean(R.bool.isInLandscape);

    if (!isInLandscapeMode)
    {
        drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);

        drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_drawer, R.string.date, R.string.applicationName)
        {
            /**
             * Called when a drawer has settled in a completely closed
             * state.
             */
            public void onDrawerClosed(View view)
            {
                super.onDrawerClosed(view);
            }

            /** Called when a drawer has settled in a completely open state. */
            public void onDrawerOpened(View drawerView)
            {
                super.onDrawerOpened(drawerView);
                drawerView.bringToFront();
                drawerView.requestLayout();
            }
        };

        // Set the drawer toggle as the DrawerListener
        drawerLayout.setDrawerListener(drawerToggle);
        drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);

        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);
    }

    drawerLayout.openDrawer(Gravity.START);
}

The Drawer is opening as it should but if i try to click one of my list entries it closes. If I open it manually afterwards everything is working perfectly. Do I have to set the focus on my drawerLayout somehow? I have tried several things but nothing seems to work.

UPDATE

Finally found my error:

I had the following code in my layout xml file:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <LinearLayout
            android:id="@+id/list_container"
            android:layout_width="320dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#f1f1f1"
            android:orientation="horizontal" >
        </LinearLayout>

        <FrameLayout
            android:id="@+id/detail_container"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal" >
        </FrameLayout>
    </android.support.v4.widget.DrawerLayout>

</FrameLayout>

The main content view(detail_container) must be the first child in the navigation drawer thought. So i changed it to this:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <FrameLayout
            android:id="@+id/detail_container"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal" >
        </FrameLayout>

        <LinearLayout
            android:id="@+id/list_container"
            android:layout_width="320dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#f1f1f1"
            android:orientation="horizontal" >
        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>

</FrameLayout>

And it worked.

2 Answers2

0

Use drawer.openDrawer(Gravity.LEFT);

krunal patel
  • 2,369
  • 1
  • 11
  • 11
  • as you can see in my code i already have drawerLayout.openDrawer(Gravity.START); called and it opens as it should but if i try to klick any of my entries the navigation drawer just closes itself. – user3793062 Dec 23 '14 at 09:13
0

After you find your drawer layout and Data(list or expandable list) then put

  drawerLayout.openDrawer("Name of Data Contained By Drawer");