有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在抽屉菜单中的片段之间切换不起任何作用

我对安卓系统真的很陌生,我对它很失望。我想在抽屉菜单中的片段之间切换。但是,屏幕保持不变。抽屉里写着我在一个特定的碎片上,但我看不到任何变化。我设置了不同的背景来区分它们

我相信根据人们的说法,fragment manager是不受欢迎的,但我不知道如何改变它。另外,我不知道哪些教程已经过时,因为我对安卓开发知之甚少

片段代码:

public class ToolsFragment extends Fragment {

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    return inflater.inflate(R.layout.fragment_tools, container,false);
}

}

主要活动代码:

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private DrawerLayout drawer;

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

    Toolbar toolbar = findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    drawer = findViewById(R.id.drawer_layout);
    NavigationView navigationView = findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
            R.string.navigation_drawer_open,R.string.navigation_drawer_close);

    drawer.addDrawerListener(toggle);
    toggle.syncState();

    if (savedInstanceState == null) {

        getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new CharacterFragment());
        navigationView.setCheckedItem(R.id.nav_characters);
    }


}

@Override
public void onBackPressed() {
    if (drawer.isDrawerOpen(GravityCompat.START)){
        drawer.closeDrawer(GravityCompat.START);
    } else{
        super.onBackPressed();
    }
}


@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()){
        case R.id.nav_characters:

            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new CharacterFragment());
            break;
        case R.id.nav_episodes:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new EpisodesFragment());
            break;
        case R.id.nav_tools:
            getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new EpisodesFragment());
            break;
    }
    drawer.closeDrawer(GravityCompat.START);
    return true;
}

}


共 (1) 个答案

  1. # 1 楼答案

    您忘记调用commit()

    getSupportFragmentManager()。beginTransaction()。替换(R.id.fragment\u容器,新的CharacterFragment()。提交()