我是這樣解決的:
在setOnNavigationItemSelectedListener 里,也就是每次點擊底部導航欄時,判斷一下點擊的是否是當前界面的導航欄,否才發生跳轉,
public class MainActivity extends AppCompatActivity {
int checked = 1;//當前顯示的界面,共有1,2,3三個
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@SuppressLint("ResourceAsColor")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//去掉標題欄
getSupportActionBar().hide();
getWindow().setStatusBarColor(this.getResources().getColor(R.color.background));
setContentView(R.layout.activity_main);
//設定導航欄
final BottomNavigationView bottomNavigationView = findViewById(R.id.bottomNavigationView);
final NavController controller = Navigation.findNavController(this, R.id.fragment_up);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.taskFragment:
if (checked != 1) {//判斷點擊的界面是不是當前界面,不是才發生跳轉
controller.popBackStack();
controller.navigate(R.id.taskFragment);
checked = 1;
}
break;
case R.id.goalFragment:
if (checked != 2) {
controller.popBackStack();
controller.navigate(R.id.goalFragment);
checked = 2;
}
break;
case R.id.notesFragment:
if (checked != 3) {
controller.popBackStack();
controller.navigate(R.id.notesFragment);
checked = 3;
}
break;
}
return true;
}
});
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/274768.html
標籤:其他
上一篇:模擬購物車頁面全選單選的金額累加
下一篇:安卓k線上面坐標點標記影片
