gpt4 book ai didi

java - 从抽屉导航启动 fragment 会导致应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 04:41:28 26 4
gpt4 key购买 nike

正如问题所述,我正在尝试从 Android Studio 预构建的抽屉导航模板启动一个 fragment 。

我尝试在这里关注这个家伙的视频 https://www.youtube.com/watch?v=H4R-hz56oBA 。在测试过程中,有时他的方法可以工作,有时则不行,但是,我总是使用相同的代码。

public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();

if (id == R.id.nav_home) {
// Handle the camera action
} else if (id == R.id.nav_gallery) {
Facebook facebookFrag = new Facebook();
FragmentManager manager = getSupportFragmentManager();
manager.beginTransaction().replace(R.id.homeLanding,facebookFrag,facebookFrag.getTag()).commit();

} else if (id == R.id.nav_slideshow) {

} else if (id == R.id.nav_tools) {

} else if (id == R.id.nav_share) {

} else if (id == R.id.nav_send) {

}

DrawerLayout drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}

理论上,当在抽屉导航中单击项目 Gallery 时,名为 Facebook 的 fragment 将取代我名为 homeLanding 的默认 fragment 。有什么想法吗?

更新:看起来我需要在 MainActivity 中实现 OnFragmentInteractionListener。

cyclic inheritance involving

解决了我的问题

最佳答案

我使用这段代码,我的抽屉是一个全局变量:

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

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

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

//Use this code to set the starting fragment:
if(savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new VendasFragment()).commit();
navigationView.setCheckedItem(R.id.nav_vendas);
getSupportActionBar().setTitle(R.string.menu_vendas);
}
}


@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
switch (item.getItemId()){

case (R.id.nav_vendas):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new VendasFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_vendas);
break;

case (R.id.nav_clientes):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new ClienteFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_clientes);
break;

case (R.id.nav_estoque):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new EstoqueFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_estoque);
break;

case (R.id.nav_estatistica):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new EstatisticaFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_estatistica);
break;

case (R.id.nav_fornecedores):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new FornecedorFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_fornecedores);
break;

case (R.id.nav_backup):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new BackupFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_backup);
break;

case (R.id.nav_config):
break;

case (R.id.nav_conta_receber):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new ContasReceberFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_contas_receber);
break;

case (R.id.nav_contas_pagar):
getSupportFragmentManager().beginTransaction().replace(R.id.fragments_container,
new ContasPagarFragment()).commit();
getSupportActionBar().setTitle(R.string.menu_contas_pagar);
break;
}

drawer = findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}

关于java - 从抽屉导航启动 fragment 会导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56515591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com