使用Intent跳转InformationFragment报错未在AndroidManifest声明如何解决
根本错误原因
你混淆了Activity和Fragment的使用逻辑:
startActivity()方法仅能接收Activity类作为参数,作用是启动新的Activity页面InformationFragment是Fragment子类,不属于四大组件,既不能用Intent直接启动,也不需要在AndroidManifest.xml中注册。你往Manifest里添加Fragment的操作本身不符合安卓规范,才会触发类找不到的报错。
解决方案(二选一即可)
方案1:在当前showInfoActivity内加载Fragment
如果要在当前页面内显示InformationFragment,替换按钮点击事件的代码即可:
btnRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { InformationFragment infoFragment = new InformationFragment(); getSupportFragmentManager() .beginTransaction() // 此处R.id.fragment_container替换为showInfoActivity布局里用来承载Fragment的容器ID,一般为FrameLayout .replace(R.id.fragment_container, infoFragment) // 加此行可以支持点击返回键回到跳转前的页面状态 .addToBackStack(null) .commit(); } });
方案2:新建Activity承载Fragment后跳转
如果要跳转到独立的新页面显示InformationFragment,按以下步骤操作:
- 新建空Activity,例如命名为
InfoDisplayActivity,在其布局中添加Fragment承载容器 - 在AndroidManifest.xml中注册这个新建的Activity
- 修改按钮点击事件,调整Intent跳转目标为新建的Activity:
btnRegister.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(showInfoActivity.this, InfoDisplayActivity.class); startActivity(intent); } });
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

