在使用Android的底部导航视图时,我想获得一些关于构建应用程序架构的最佳方法的输入。
目前,我在MainActivity中定义了BottomNavigationView
。它看起来像这样。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BottomNavigationView bottomNavigationView = (BottomNavigationView)findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()){
case R.id.action_home:
selectedFragment = HomeFragment.newInstance();
break;
case R.id.action_search:
selectedFragment = SearchFragment.newInstance();
break;
case R.id.action_message:
selectedFragment = MessageFragment.newInstance();
break;
case R.id.action_profile:
selectedFragment = ProfileFragment.newInstance();
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, selectedFragment);
transaction.commit();
return true;
}
});
//Manually displaying the first fragment - one time only
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, HomeFragment.newInstance());
transaction.commit();
}
问题是,一旦我点击一个标签,就会打开一个片段,我希望这些片段打开其他片段/活动(即:
在遇到很多错误后,我研究了如何构建我的应用程序,但我发现结果好坏参半。有人知道BottomNavigationView
与Fragments
一起使用的正确方法吗?在那些fragments
我可以加载更多Activities/fragments
。提前非常感谢。
答案 0 :(得分:1)
每种方法都取决于项目以及您假装实现的目标。我不得不编写一个底部导航应用程序的代码,该应用程序使用超过20个底部导航布局,这意味着一个单独的活动。您希望实现的过程几乎与在所选标签上的所需选项卡中设置所需的片段相同,不同之处在于,您将点击片段内的按钮,而不是在标签上进行操作用新的理想片段。
点击标签 - >替换片段 - >按钮单击里面的片段 - >替换片段 - >等等。
由于您正在使用替换,因此您必须仔细处理您的onBackPress
事件,因为我假设您在每次背压时都希望返回上一个片段。我自己,我在Main Activity中实现了一个接口,用于监听onBackPress上的可见片段。