2015-03-31 2 views
1

Я пытаюсь использовать ящик навигации с панелью инструментов, но нажатие кнопки навигации не вызывает обработчик onOptionsItemSelected, и список не открывается.Навигация MenuItem в панели инструментов не запускается onOptionsItemSelected

Кнопка поиска, однако, триггер onOptionsItemSelected.

Это мой код и XML:

EDIT: также onDrawerClosed() и onDrawerOpened() не называются

MainActivity.java:

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

mToolbar = (Toolbar) findViewById(R.id.tool_bar); 
setSupportActionBar(mToolbar); 

mAdapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles, numOfTabs); 

// Assigning ViewPager View and setting the adapter 
mPager = (ViewPager) findViewById(R.id.pager); 
mPager.setAdapter(mAdapter); 

// Assigning the Sliding Tab Layout View 
mTabs = (SlidingTabLayout) findViewById(R.id.tabs); 
mTabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width 

mTabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() { 
    @Override 
    public int getIndicatorColor(int position) { 
     return getResources().getColor(R.color.augury_white); 
    } 
}); 

// Setting the ViewPager For the SlidingTabsLayout 
mTabs.setViewPager(mPager); 

// Set navigation drawer 
mPlanetTitles = getResources().getStringArray(R.array.planets_array); 
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
mDrawerList = (ListView) findViewById(R.id.left_drawer); 

// Set the adapter for the list view 
mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mPlanetTitles)); 
// Set the list's click listener 
mDrawerList.setOnItemClickListener(new DrawerItemClickListener()); 

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
getSupportActionBar().setHomeButtonEnabled(true); 

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, 
      mToolbar , R.string.drawer_open, R.string.drawer_close) { 

     /** Called when a drawer has settled in a completely closed state. */ 
     public void onDrawerClosed(View view) { 
      super.onDrawerClosed(view); 
      getActionBar().setTitle(mTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      syncState(); 
     } 

     /** Called when a drawer has settled in a completely open state. */ 
     public void onDrawerOpened(View drawerView) { 
      super.onDrawerOpened(drawerView); 
      getActionBar().setTitle(mDrawerTitle); 
      invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() 
      syncState(); 
     } 
    }; 

// Set the drawer toggle as the DrawerListener 
mDrawerLayout.setDrawerListener(mDrawerToggle); 

}

Активность_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity"> 

    <include 
     android:id="@+id/tool_bar" 
     layout="@layout/tool_bar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     /> 

    <com.augury.mobile.auguryandroid.SlidingTabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:elevation="2dp" 
     android:background="@color/augury_blue"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_height="match_parent" 
     android:layout_width="match_parent" 
     android:layout_weight="1"> 

    <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"> 


    <!-- The navigation drawer --> 
    <ListView android:id="@+id/left_drawer" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     android:choiceMode="singleChoice" 
     android:divider="@android:color/transparent" 
     android:dividerHeight="0dp" 
     android:background="#111"/> 

    </android.support.v4.widget.DrawerLayout> 
    </android.support.v4.view.ViewPager> 

</LinearLayout> 

Спасибо!

+0

Вы переопределения 'onPostCreate()'? – Xcihnegn

+0

Да, я вызвал его с помощью: mDrawerToggle.syncState(); –

+0

'mDrawerToggle.setDrawerIndicatorEnabled (true);' у вас есть? и какой импорт для 'ActionBarDrawerToggle', V7? – Xcihnegn

ответ

0

написать этот

getSupportActionBar().setDisplayShowHomeEnabled(true); 

только после того, как вы установите панель

и удалить

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

это приведет вас к предыдущей задаче, если у вас есть какие-либо, которые могут дать вам неожиданное поведение

+0

спасибо, попробовал ... без изменений :( –

2

Просмотрите эту планировку:

<android.support.v4.widget.DrawerLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    tools:context=".MainActivity" 
    > 

    <LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    > 

    <include 
    android:id="@+id/tool_bar" 
    layout="@layout/tool_bar" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    /> 

    <com.augury.mobile.auguryandroid.SlidingTabLayout 
    android:id="@+id/tabs" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:elevation="2dp" 
    android:background="@color/augury_blue"/> 

    <android.support.v4.view.ViewPager 
    android:id="@+id/pager" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:layout_weight="1"> 
    </android.support.v4.view.ViewPager> 

</LinearLayout> 

<!-- The navigation drawer --> 
<ListView android:id="@+id/left_drawer" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:choiceMode="singleChoice" 
    android:divider="@android:color/transparent" 
    android:dividerHeight="0dp" 
    android:background="#111"/> 

</android.support.v4.widget.DrawerLayout> 
+0

Отлично !! спасибо! Единственная проблема сейчас в том, что просмотр списка слишком высок, и когда он открывается, вы можете Не видите значок стрелки навигации. –

+0

Вау, я полностью упустил макет –

1

Это то, что работает для меня:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/relative" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" tools:context=".MainActivity"> 

    <include 
     android:id="@+id/tool_bar" 
     layout="@layout/tool_bar" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     /> 

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

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:orientation="vertical"> 

      <com.augury.mobile.auguryandroid.SlidingTabLayout 
       android:id="@+id/tabs" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:elevation="2dp" 
       android:background="@color/augury_blue"/> 

      <android.support.v4.view.ViewPager 
       android:id="@+id/pager" 
       android:layout_height="match_parent" 
       android:layout_width="match_parent" 
       android:layout_weight="1"> 
      </android.support.v4.view.ViewPager> 

     </LinearLayout> 

     <!-- The navigation drawer --> 
     <ListView android:id="@+id/left_drawer" 
      android:layout_width="240dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:choiceMode="singleChoice" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="0dp" 
      android:background="#111"/> 

    </android.support.v4.widget.DrawerLayout> 

</RelativeLayout>