我正在android studio中使用navbar。我正在尝试通过getSupportFragmentManager()。beginTransaction()。replace()替换片段,但是它不起作用,并不断给我错误。这是代码:
public class UserNavbar extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
private DrawerLayout mydrawerlayout;
private ActionBarDrawerToggle atoggle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_navbar);
mydrawerlayout = (DrawerLayout)findViewById(R.id.drawer_layout);
atoggle = new ActionBarDrawerToggle(this,mydrawerlayout,R.string.open,R.string.close); //Done
mydrawerlayout.addDrawerListener(atoggle);
atoggle.syncState();
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.home:
getSupportFragmentManager().beginTransaction().replace(R.id.frame, new User_Home_Fragment()).commit();
break;
case R.id.personalinformation:
getSupportFragmentManager().beginTransaction().replace(R.id.frame, new Personal_Info_Frag()).commit();
break;
case R.id.settings:
getSupportFragmentManager().beginTransaction().replace(R.id.frame, new Settings_Frag()).commit();
break;
}
mydrawerlayout.closeDrawer(GravityCompat.START);
return true;
}}
开发了User_Home_Fragment(),Personal_Info_Frag()和Settings_Frag()。如果需要,我也将发布它们。
如果有人有任何建议,我将不胜感激。问候
答案 0 :(得分:1)
我想您错过了新关键字,因为 replace 方法有两个参数,第一个是容器id,第二个是片段实例。
getSupportFragmentManager().beginTransaction().replace(R.id.frame, new User_Home_Fragment()).commit();
答案 1 :(得分:0)
在致电您的片段之前,请先写新关键字。 例如
new User_Home_Fragment()