在BottomNavigationView中的片段之间切换

Ton*_*kus 1 android android-fragments bottomnavigationview

我正在使用带有底部导航视图的简单应用程序。我有3个片段(布局和Java)。我有在我的MainActivity.java中声明的BottonNavigationView。我的bottonnavigation有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;
}
Run Code Online (Sandbox Code Playgroud)

片段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);
}
Run Code Online (Sandbox Code Playgroud)

小智 6

你可以试试:

@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;
    }
    getSupportFragmentManager().beginTransaction().replace(R.id.content, selectedFragment).commit();
    return true;
}
Run Code Online (Sandbox Code Playgroud)


raj*_*ala 5

您不必每次都创建 newInstance。您可以保存片段状态。按照下面的链接

fragmentManager.beginTransaction().hide(toBeHidden).show(toBeShown).commit();
Run Code Online (Sandbox Code Playgroud)

https://medium.com/@oluwabukunmi.aluko/bottom-navigation-view-with-fragments-a074bfd08711