【发布时间】:2017-06-08 00:54:42
【问题描述】:
我正在使用带有底部导航视图的简单应用程序。我有 3 个片段(布局和 java)。我有 BottonNavigationView,在 MainActivity.java 中声明。我的底部导航有 3 个项目,用于 3 个片段。所以,在我的 MainActivity.java 中,当我选择一个项目时,它会启动一个片段。因此,当我再次选择另一个项目时,什么也没有发生,因为在 java 片段中我需要声明 BottonNavigationView,但我不知道如何设置它以将实际片段与另一个片段切换。 我试过这个链接,但没有成功:https://developer.android.com/training/basics/fragments/fragment-ui.html
对不起,我的英语不好
代码如下:
主要活动
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
selectedFragment = HomeFragment.newInstance();
break;
case R.id.navigation_dashboard:
selectedFragment = DashboardFragment.newInstance();
break;
case R.id.navigation_notifications:
selectedFragment = NotificationsFragment.newInstance();
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.content, selectedFragment);
transaction.commit();
return true;
}
片段 Java 示例
public class HomeFragment extends Fragment {
public static HomeFragment newInstance() {
HomeFragment fragment = new HomeFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.navigation_home, container, false);
return inflater.inflate(R.layout.navigation_home, container, false);
}
【问题讨论】:
-
为什么你总是创建新实例?
-
在我的 main_activity 布局中,我有一个带有 FrameLayout 和 BottomNavigationView 的线性布局,我想我需要创建一个新实例,不是吗?
-
您可以只创建一次片段,然后可以再次使用它们。
-
你能给我一个代码吗?以及我将如何在所选项目的片段之间切换?
-
例如Fragment homeFragment = HomeFragment.newInstance();片段通知Fragment = NotificationsFragment.newInstance();在 switch 情况下,您可以设置 selectedFragment = homeFragment 或其他内容
标签: android android-fragments bottomnavigationview