DrawerLayoutでBackkeyで閉じる処理(失敗例も)

DrawerLayoutでバックボタンで閉じる処理は素直にonBackPressedをOverrideしましょう

 

正解

@Override
public void onBackPressed() {
if (this.mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
this.mDrawerLayout.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}

 

失敗

StackOverFlowにて以下のような書き方を見かけましたが真似しちゃダメです

mDrawerLayout.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);

 こうすると確かにNavigationViewは閉じるのですが、子ビューにどうやってもフォーカスが当たらなくなり、以下の様なエラーが吐き出されます

 W/TextView: TextView does not support text selection. Action mode cancelled.