2017-03-09 74 views
-2

我想通過單擊導航標題上的imagebutton來關閉android導航抽屜。但是,當我啓動應用程序時,該應用程序崩潰。關閉imagebutton的代碼是通過單擊ImageButton關閉android導航抽屜

final ImageButton button = (ImageButton) findViewById(R.id.close_image_Button); 

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     DrawerLayout drawer =(DrawerLayout)findViewById(R.id.drawer_layout); 
     drawer.closeDrawers(); 
    } 
}); 

任何幫助將不勝感激。

+0

'應用程序崩潰,當我啓動應用程序。「 - 這表明,必須有一些其他問題。 – Wizard

+1

在這裏發佈崩潰報告 – warlock

+0

發佈您的錯誤日誌 –

回答

0

也許可能是一個NullPointerException既然您選擇訪問headerLayout組件。您需要修改您的findViewById()方法,如下所示:

試試這個!

View headerView = navigationView.getHeaderView(0); 
    final ImageButton button = (ImageButton) headerView.findViewById(R.id.close_image_Button);  
+0

感謝MadScientist,您的解決方案工作! – Dipanshu

+0

我很高興它做到了!感謝您將它標記爲答案! – MadScientist

+0

請告訴我爲什麼我們必須使用 查看headerView = navigationView.getHeaderView(0); – Dipanshu

0

你應該在下面的抽屜佈局上做。

mDrawerLayout.closeDrawer(Gravity.LEFT); 
-1
ImageButton button = (ImageButton) findViewById(R.id.close_image_Button); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      mDrawerLayout.closeDrawer(Gravity.LEFT); 
     } 
    }); 
0

試試這個,

final ImageButton button = (ImageButton) findViewById(R.id.close_image_Button); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
      drawer.closeDrawer(GravityCompat.START); 
     } 
    }); 
0

按鈕點擊

drawer.closeDrawer(Gravity.START); //Gravity.START is depend on gravity set to DrawerLayout in xml file.