目錄
在Android開發中經常碰到一些坑,讓自己忙碌很久才發現哪個地方出現了問題。其實可能都是難以發現的小細節和小疏漏,就會造成你無盡的麻煩和浪費時間。我總結下開發中碰到的問題,希望大家看得到後,碰到同樣的問題能少採坑。
BottomNavigationView設置setOnNavigationItemSelectedListener後
超過3個item的menu點擊無效
Xml中配置是這樣的:
menu菜單內容的xml文件配置是這樣的bottom_nav_menu:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/navigation_home"
android:icon="@drawable/ic_home_black_24dp"
android:title="@string/home"
/>
<item
android:id="@+id/navigation_classify"
android:icon="@drawable/ic_classify"
android:title="@string/classify"
/>
<item
android:id="@+id/navigation_find"
android:icon="@drawable/ic_find"
android:title="@string/find"
/>
<item
android:id="@+id/navigation_shopcar"
android:icon="@drawable/ic_shopcar"
android:title="@string/shopCar"
/>
<item
android:id="@+id/navigation_mine"
android:icon="@drawable/ic_mine"
android:title="@string/mine"
/>
</menu>
在onCreate中初始話爲如圖
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_home);
binding.navView.setOnNavigationItemSelectedListener(this);
setData();
}
menu中有5個item,當給BottomNavigationView設置setOnNavigationItemSelectedListener後發現第四個和第五個item無法點擊了,如圖:
解決方案一
添加一行代碼:
不可將setContentView(R.layout.activity_home);方法添加在 DataBindingUtil.setContentView(this, R.layout.activity_home)之前,否則還是無法解決問題:
解決方案二
將BottomNavigationView.OnNavigationItemSelectedListener 的實例化放在onCreate外邊可以接覺該問題
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_home);
binding.navView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
setData();
}
//在class括號內就初始化,不可放入onCreate中初始化
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
return true;
case R.id.navigation_classify:
return true;
case R.id.navigation_find:
return true;
case R.id.navigation_shopcar:
return true;
case R.id.navigation_mine:
return true;
}
return false;
}
};
方案一和 方案二可解決問題,如圖。
我們在進行Fragment+底部導航欄時,以前底部欄常採用的方式爲使用Radiogroup的方式解決,其實大家嘗試用用BottomNavigationView,也不錯哦。