当前位置: 首页 > 知识库问答 >
问题:

底部导航。setVisibility不工作

田镜
2023-03-14

我创建一个应用程序并在其中使用BottomNavigationView,其中一个片段通过适配器调用另一个片段。我试图让BottomNavigationView在调用这个片段时消失,为此我使用setVigic()。但问题是它没有消失,也许有人能告诉我我做错了什么

底部导航视图:

public class ProfileFragment extends Fragment {
    private ImageView avatar;
    private TextView nickname, bio, website;
    private FirebaseMethods mFirebaseMethods;
    private Context mContext;
    private AppBarLayout mAppBarLayout;
    private Menu mMenu;
    private RecyclerView mRecyclerView;
    private FirebaseUser mCurrentUser;
    private TextView followers, followings;
    private BottomNavigationView mBottomNavigationView;


    private String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE};
    private ActivityResultContracts.RequestMultiplePermissions mRequestMultiplePermissions= new ActivityResultContracts.RequestMultiplePermissions();

    private DatabaseReference mDatabaseReference;
    private DatabaseReference followingRef;
    private DatabaseReference followersRef;

    private ReadWritePermissions mReadWritePermissions;
    private IntentFilter filter = new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE);

    private String mParam1;
    private String mParam2;

    public ProfileFragment() {
        // Required empty public constructor
    }

    public static ProfileFragment newInstance(String param1, String param2) {
        ProfileFragment fragment = new ProfileFragment();
        Bundle args = new Bundle();

        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_profile2, container, false);

        mContext = container.getContext();
        mFirebaseMethods = new FirebaseMethods(mContext);
        mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
        mBottomNavigationView = getActivity().findViewById(R.id.bottomNavigation);

        followingRef = FirebaseDatabase.getInstance().getReference("Following");
        followersRef = FirebaseDatabase.getInstance().getReference("Followers");

        Toolbar toolbar = view.findViewById(R.id.toolbar);
        mAppBarLayout = view.findViewById(R.id.app_bar);
        mRecyclerView = view.findViewById(R.id.posts_recycler);

        ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
        ((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);

        setHasOptionsMenu(true);

        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getActivity().finish();
            }
        });

        loadPosts();

        avatar = view.findViewById(R.id.profile_avatar);
        nickname = view.findViewById(R.id.profile_nickname);
        bio = view.findViewById(R.id.profile_bio);
        website = view.findViewById(R.id.profile_website);
        followers = view.findViewById(R.id.followers_count);
        followings = view.findViewById(R.id.following_count);

        setFollowingFollowers();

        followers.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FollowersFollowingsFragment fragment = new FollowersFollowingsFragment();
                Bundle args = new Bundle();
                args.putString("uid", mCurrentUser.getUid());
                args.putString("followingsOrFollowers", "followers");
                fragment.setArguments(args);

                FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
                fragmentTransaction.add(R.id.frame_container,fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });

        followings.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FollowersFollowingsFragment fragment = new FollowersFollowingsFragment();
                Bundle args = new Bundle();
                args.putString("uid", mCurrentUser.getUid());
                args.putString("followingsOrFollowers", "followers");
                fragment.setArguments(args);

                FragmentTransaction fragmentTransaction = getActivity().getSupportFragmentManager().beginTransaction();
                fragmentTransaction.add(R.id.frame_container,fragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
            }
        });

        avatar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        mFirebaseMethods.getUserDataProfile(avatar, nickname, bio);

        return view;
    }

    private void loadPosts()
    {
        mReadWritePermissions = new ReadWritePermissions(getActivity().getLifecycle(), getActivity().getActivityResultRegistry());
        getLifecycle().addObserver(mReadWritePermissions);

        mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
        mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Posts");
        mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));

        FirebaseRecyclerOptions<Posts> options
                = new FirebaseRecyclerOptions.Builder<Posts>()
                .setQuery(mDatabaseReference.orderByChild("uid").equalTo(mCurrentUser.getUid()), Posts.class)
                .build();


        mReadWritePermissions = new ReadWritePermissions(getActivity().getLifecycle(), getActivity().getActivityResultRegistry());
        getLifecycle().addObserver(mReadWritePermissions);

        PostAdapter adapter = new PostAdapter(options, mContext, mReadWritePermissions);
        mRecyclerView.setAdapter(adapter);
        adapter.startListening();
    }

    private void setFollowingFollowers()
    {
        mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
        followersRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                followers.setText(Integer.toString((int)snapshot.child(mCurrentUser.getUid()).getChildrenCount()));
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });

        followingRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                followings.setText(Integer.toString((int)snapshot.child(mCurrentUser.getUid()).getChildrenCount()));
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }

    @Override
    public void onPause() {
        super.onPause();
    }

    @Override
    public void onResume() {
        super.onResume();
    }
}

共有1个答案

谷弘致
2023-03-14

改用设置可见性(View.GONE)。

我也有同样的问题,出于某种原因,它不起作用,但在文档中,它们也使用视图。消失了。

编辑:根据片段,使用文档中显示的方法隐藏/显示BottomNavigationView

navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
   @Override
   public void onDestinationChanged(@NonNull NavController controller,
           @NonNull NavDestination destination, @Nullable Bundle arguments) {
       if(destination.getId() == R.id.full_screen_destination) {
           toolbar.setVisibility(View.GONE);
           bottomNavigationView.setVisibility(View.GONE);
       } else {
           toolbar.setVisibility(View.VISIBLE);
           bottomNavigationView.setVisibility(View.VISIBLE);
       }
   }
});

使用本例中的导航组件。

 类似资料:
  • 实现tabbar建议采用小程序原生的tabbar,通过设置page/main.js(即对应小程序中app.json)来实现,详情请看小程序文档。示例如下,仅作参考: tabBar: { color: '#999999', selectedColor: '#1AAD16', backgroundColor: '#ffffff', borderStyle: 'white', /*

  • 我有一个关于底部导航栏的奇怪问题,虽然我花了大量时间在它上面,但我无法解决。当我以“推荐”的方式(从许多教程中)使用它时,它就是无法导航。 那么,我所说的“推荐”方式是什么意思呢:我有一个单独的acticity,其中有一个名为“MainActivity”的navHostFragment。这个主要活动有一个XML布局文件,我将底部导航栏放在其中。BottomNavigationBar还有一个XML布

  • Tabbar 底部导航栏 1.4.8 优点: 此组件一般用于应用的底部导航,具有如下特点: 可以设置凸起的按钮,且是全端通用的 图标可以使用字体图标(内置图标和扩展图标)或者图片 可以动态切换菜单的数量以及配置 切换菜单之前,可以进行回调鉴权 可以设置角标 有效防止组件区域高度塌陷,无需给父元素额外的内边距或者外边距来避开导航的区域 缺点: 虽然优点很多,但是如果用此组件模拟tabbar页面的话依

  • 本文向大家介绍Flutter实现底部导航,包括了Flutter实现底部导航的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Flutter实现底部导航的具体代码,供大家参考,具体内容如下 BottomNavigationBar使用 底部导航栏 主文件 main.dart (注意导入文件路径) 底部包含三个导航按钮,分别对应三个界面: firstPage.dart secondPage.

  • 我想在我的项目中包括底部导航菜单,但它不起作用。底部导航菜单中没有显示菜单图标。我使用的是Android Studio北极狐。我做了所有正确的步骤,但仍然面临问题。这是我的代码,请帮我解决这个问题。谢谢。 主要活动Xml res\菜单\底部导航菜单 build.gradle 主题。xml