java - 获得错误的底部导航 fragment onclick

标签 java android android-fragments bottomnavigationview

你好我正在制作一个应用程序,我在其中使用带有底部导航的 fragment 但是当我点击主页按钮时它不会加载主页 fragment 而是加载第二个 fragment 而且当我启动应用程序主页 fragment 时默认情况下不会加载我知道这听起来可能很天真,但如果有人可以指导我,我会遇到这个问题 我的 fragment 导航代码

public class MainActivity extends AppCompatActivity {
   FrameLayout frameLayout;
   FragmentManager fragmentManager;
   Fragment fragment;
   BottomNavigationView bottomNavigationView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //BottomNavigationView b=findViewById(R.id.bottom_nav);


        fragmentManager = getSupportFragmentManager();

       if(findViewById(R.id.frame_container)!=null){
            if(savedInstanceState!=null){

                return;
            }
            /*HomeFragment homeFragment = new HomeFragment();
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.frame_container, homeFragment,null);
            transaction.addToBackStack(null);
      /* Comment this line and it should work!*/
            //transaction.addToBackStack(null);
            //transaction.commit();
        }
        bottomNavigationView = (BottomNavigationView) findViewById(R.id.bottom_nav);

        //final SeekBar sb = (SeekBar) findViewById(R.id.sb);
        bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment fragment = null;
                switch (item.getItemId()){
                    case R.id.navigation_home:
                        fragment = new HomeFragment();
                        loadFragment(fragment);

                    case R.id.navigation_feed:
                        fragment = new FeedFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_event:
                        fragment = new EventsFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_nearby:
                        fragment = new NearbyFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_profile:
                        fragment = new ProfileFragment();
                        loadFragment(fragment);
                        return true;
                }
                return false;

            }
        });

    }

    private void loadFragment(Fragment fragment) {
       // HomeFragment homeFragment = new HomeFragment();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.frame_container, fragment,null);
        transaction.addToBackStack(null);
      /* Comment this line and it should work!*/
        //transaction.addToBackStack(null);
        transaction.commit();
        // load fragment
        //HomeFragment homeFragment = new HomeFragment();

    }

}

最佳答案

你只是忘记了 return true; inside case R.id.navigation_home: 检查一下

试试这个

bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                Fragment fragment = null;
                switch (item.getItemId()){
                    case R.id.navigation_home:
                        fragment = new HomeFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_feed:
                        fragment = new FeedFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_event:
                        fragment = new EventsFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_nearby:
                        fragment = new NearbyFragment();
                        loadFragment(fragment);
                        return true;
                    case R.id.navigation_profile:
                        fragment = new ProfileFragment();
                        loadFragment(fragment);
                        return true;
                }
                return false;

            }
        });

关于java - 获得错误的底部导航 fragment onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49993441/

相关文章:

android - IllegalArgumentException : No view found for id for fragment --- ViewPager in ViewPager

java - 从 Camera Intent 返回时 fragment 被破坏 4 次

android - FragmentTabHost 没有在 android 的 Fragment 内创建 View

java - 程序不重新绘制?

java - 如何保护 mp3 文件在 Android 上不被读取或复制?

java - 使用 Firebase 的图像 slider (Daimajia)

java - 简单的安卓天气应用

java - IntelliJ插件: how to use a custom FrameTitleBuilder?

java - 将扫描仪输入永久存储到字符串中

android - 签名并发布 Android 应用程序