是否可以通过片段显示BottomNavigation?

时间:2019-02-24 11:14:21

标签: android android-fragments android-bottomappbar

我有一个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) {

}

}

Fragment的Fragment为空,首先我只想在没有导航栏的情况下显示

我对第二个片段有一些问题。 当我打开片段的片段时,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中,我使用了另一种语言,所以这就是为什么可能有一些错误的语法或错误点击的原因,对不起,该程序的语法有效)

0 个答案:

没有答案