Можно ли показать BottomNavigation через фрагмент? - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть Activity, у которого есть нижняя навигация:

package com.example.program;

public class Add extends AppCompatActivity {

    BottomNavigationView bottomNav;

    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add);

        bottomNav = findViewById(R.id.bottom_navigation);
        bottomNav.setOnNavigationItemSelectedListener(navListener);


        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    new addGrade()).commit();
        }
}

private BottomNavigationView.OnNavigationItemSelectedListener navListener =
    new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            Fragment selectedFragment = null;

            switch (item.getItemId()) {
                case R.id.nav_home:
                    selectedFragment = new addGrade();
                    break;
                case R.id.nav_exam:
                    selectedFragment = new addExam();
                    break;
            }

            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                    selectedFragment).commit();

            return true;
            }
        };
}

С помощью навигации я могу открыть два фрагмента, и у одного из них есть другой фрагмент.

Фрагмент:

package com.example.program;

    public class addGrade extends Fragment implements View.OnClickListener {

        View v;

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

        Button button = (Button)v.findViewById(R.id.newObject);
        button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Fragment addObject = new addObject ();
            FragmentTransaction FragTran = getFragmentManager().beginTransaction();
            FragTran.replace(R.id.addMenu,addObject);
            FragTran.commit();
        }
    });


    return v;

}

@Override
public void onClick(View view) {

}

}

Фрагмент фрагмента пуст, сначала я просто хочу отобразить без панели навигации

И у меня есть некоторые проблемыс этим вторым фрагментом.Когда я открываю фрагмент фрагмента, BottomNavigation все еще там, но не работает (когда я нажимаю, ничего не происходит).Сначала попробуйте setVisibility(View.GONE) вот так:

Активность:

 public void setVisibility() {
         bottomNav.setVisibility(View.GONE);
    }

Первый фрагмент:

Add add = new Add();  
Button button = (Button)v.findViewById(R.id.newObject);
            button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                add.setVisibility();

                Fragment addObject = new addObject ();
                FragmentTransaction FragTran = getFragmentManager().beginTransaction();
                FragTran.replace(R.id.addMen

u,addObject );
            FragTran.commit();
        }
    });

Итак, мое лучшее решение, если Нижняя навигация непоказал во втором Fragment, но нормально, если отображается, но, по крайней мере, должно работать.(Я переписываю эти коды, потому что в IDE я использую другой язык, поэтому может иметь некоторые неправильные синтаксисы или ошибки, извините, синтаксис программы работает)

...