在Android Studio的导航栏中替换片段时出错

时间:2019-03-06 09:09:50

标签: java android android-fragments android-navigation-drawer

我正在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;
}}

这是错误: Error Message

开发了User_Home_Fragment(),Personal_Info_Frag()和Settings_Frag()。如果需要,我也将发布它们。

如果有人有任何建议,我将不胜感激。问候

2 个答案:

答案 0 :(得分:1)

我想您错过了新关键字,因为 replace 方法有两个参数,第一个是容器id,第二个是片段实例。

getSupportFragmentManager().beginTransaction().replace(R.id.frame, new User_Home_Fragment()).commit();

答案 1 :(得分:0)

在致电您的片段之前,请先写关键字。 例如

new User_Home_Fragment()