2016-01-20 91 views
0

我能夠看到工具欄中的後退按鈕,但是當我點擊時,什麼也沒有發生。它不會去onOptionsItemSelected,但是當我刪除整個實施ActionBarDrawerToggle然後後退按鈕工作正常。我需要在需要時在兩者之間切換。預先感謝。工具欄後退按鈕沒有調用onOptionsItemSelected Android

package demo.sample.com.sample.base; 

public class MainActivity extends AppCompatActivity { 

    private static final String TAG = MainActivity.class.getSimpleName(); 
    private DrawerLayout mDrawer; 
    private ActionBarDrawerToggle mDrawerToggle; 


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

     setContentView(R.layout.activity_digi_care); 

     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     mDrawerToggle = new ActionBarDrawerToggle(
       this, mDrawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
     mDrawer.setDrawerListener(mDrawerToggle); 
     mDrawerToggle.syncState(); 
     mDrawer.setFocusable(false); 

     NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     navigationView.setItemIconTintList(null); 
     navigationView.setNavigationItemSelectedListener(this); 
     navigationView.getMenu().getItem(0).setChecked(true); 


     mDrawerToggle.setDrawerIndicatorEnabled(false); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     Logger.i(TAG, "onOptionsItemSelected called"); 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       Logger.i(TAG, "Back button pressed"); //Never getting called 
       //onBackPressed(); 
       return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.map_menu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

} 

回答

3

我終於找到了解決辦法。取而代之的是獲得工具欄主頁按鈕點擊onOptionsItemSelected()它可以通過DrawerToggle.setToolbarNavigationClickListener處理。

mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // event when click home button 
       Log.d("cek", "home selected"); 
      } 
     }); 

感謝@meow meo。來源 - Cannot catch toolbar home button click event

2

如果你想點擊切換按鈕時onOptionsItemSelected()方法火,你需要使用ActionBarDrawerToggle四參數的構造函數,並不需要一個Toolbar說法。

public ActionBarDrawerToggle(Activity activity, 
          DrawerLayout drawerLayout, 
          int openDrawerContentDescRes, 
          int closeDrawerContentDescRes) 

否則,切換將直接處理抽屜打開/關閉本身。