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