android-fragments 如何从某些片段隐藏底部导航视图?

jhdbpxl9  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(229)

我在一个应用程序中工作,我使用底部导航。我有四个菜单选项在底部的一个菜单后广告我有一个按钮(“开始列出您的财产”),通过它我进入了另一个片段,但问题是,底部导航菜单也显示在那里,现在我怎么能停止显示这一点呢?
我附上了照片

主要活动

public class MainActivity extends AppCompatActivity {

NavController navController;
BottomNavigationView bottomNavigationView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    navController = Navigation.findNavController(this, R.id.fragmentContainerView);
    bottomNavigationView = findViewById(R.id.activity_main_bottom_navigation_view);
    NavigationUI.setupWithNavController(bottomNavigationView, navController);

}

public void setBottomNavigationVisibility(int visibility) {

    MainActivity activity = new MainActivity();
    bottomNavigationView.setVisibility(visibility);
}}

我不想使用底部导航的活动的代码

public class Details_Added_Fragment extends Fragment {

private PageViewModel viewModel;
FragmentDetailsAddedBinding binding;

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

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    binding = FragmentDetailsAddedBinding.inflate(inflater, container, false);

    // Inflate the layout for this fragment
    View view =  binding.getRoot();

    viewModel = new ViewModelProvider(requireActivity()).get(PageViewModel.class);

    ((MainActivity) requireActivity()).setBottomNavigationVisibility(View.GONE);

    binding.toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           Navigation.findNavController(view).navigate(R.id.action_secondFragment2_to_postad);
        }
    });


    binding.next2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

                enterName(binding.edittextName.getText().toString());
                enterEmail(binding.edittextName.getText().toString());
                enterDesc(binding.edittexDesc.getText().toString());

                Navigation.findNavController(view).navigate(R.id.action_secondFragment2_to_lastFragment);

        }
    });

    return view;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    binding = null;
}

public void enterName(String name)
{
    viewModel.setName(name);
}

public void enterEmail(String email)
{
    viewModel.setEmail(email);
}

public void enterDesc(String desc)
{
    viewModel.setDescription(desc);
}

}
上述片段的XML

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SecondFragment">

<androidx.appcompat.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:elevation="30dp"
    android:minHeight="?attr/actionBarSize"
    app:navigationIcon="@drawable/ic_baseline_arrow_back_24"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add the Details First Screen"
        android:textColor="@color/black"
        android:textSize="20sp"
        android:textStyle="bold" />

</androidx.appcompat.widget.Toolbar>

<EditText
    android:id="@+id/edittextName"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Enter Your Name"
    android:inputType="textPersonName"
    android:layout_marginStart="20sp"
    android:layout_marginTop="40sp"
    android:layout_marginEnd="20sp"
    android:padding="15dp"
    app:layout_constraintTop_toBottomOf="@+id/toolbar" />

<EditText
    android:id="@+id/edditextEmail"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="20sp"
    android:layout_marginTop="40dp"
    android:layout_marginEnd="20sp"
    android:hint="Enter Your Email"
    android:inputType="textEmailAddress"
    android:padding="15dp"
    app:layout_constraintTop_toBottomOf="@+id/edittextName" />

<EditText
    android:id="@+id/edittexDesc"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="20sp"
    android:layout_marginTop="40dp"
    android:layout_marginEnd="20sp"
    android:hint="Enter Your Description"
    android:inputType="text"
    android:padding="15dp"
    app:layout_constraintTop_toBottomOf="@+id/edditextEmail" />

<Button
    android:id="@+id/next2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="15dp"
    android:text="Next"
    app:layout_constraintBottom_toBottomOf="parent"
    tools:layout_editor_absoluteX="20dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

czq61nw1

czq61nw11#

在活动中创建方法

public void setBottomNavigationVisibility(int visibility) {
    YOUR_BOTTOM_NAV_VIEW.setVisibility(visibility);
}

在你的片段中调用这个方法。每当你想显示隐藏时,如下所示

((YourActivity) requireActivity()).setBottomNavigationVisibility(View.GONE);
 ((YourActivity) requireActivity()).setBottomNavigationVisibility(View.VISIBLE);

相关问题