将一个片段替换为另一个片段
我有一个Activity
并在RelativeLayout
中打开一个Fragment A
。之后,当我点击打开Fragment B
相同RelativeLayout
里面给出以下错误将一个片段替换为另一个片段
" java.lang.IllegalArgumentException: No view found for id 0x7f0d00cf (com.healthiera.mobile:id/Content_id_) for fragment CompAndSymp{21e51fb8 #1 id=0x7f0d00cf}
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1102)"
我认为问题是,我想在Activity
打开Fragment B
当我在Fragment A
(不活动)。我不知道如何通过其他方式解决我的问题。请告诉我该怎么做。
我发现很多人有同样的问题,但我找不到解决方案。
这是我的代码,当我试图打开Fragment B inside Fragment A
。仪表板是我的Fragment B
。
Dashboard dashboard = new Dashboard();
getFragmentManager().beginTransaction().replace(R.id.Content_id_, dashboard).commit();
活动XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/Content_id_">
</RelativeLayout>
<com.aurelhubert.ahbottomnavigation.AHBottomNavigation
android:id="@+id/AHBottomNavigation_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
以下是解决方案。 将片段替换为另一个片段
Dashboard dashboard = new Dashboard(); getActivity()。getSupportFragmentManager()。beginTransaction()。replace(android.R.id.content,dashboard).commit();
您可以使用接口解决这个问题。
您可以创建一个扩展主要活动的接口。
public interface MyInterface(){
void goToFragmentB();
}
现在,在您的mainActivity你实现这个接口并且设置了虚空方法所需的方式与片段B.
更换碎片A在您的片段,你可以retrive活动。现在只需施放此活动MyInterface的:
MyInterface myInterface = (MyInterface) myActivityRetrieved;
而且onButtonClick你可以叫
myInterface.goToFragmentB();
和你做。
希望这有助于
务必:
getSupportFragmentManager().beginTransaction().replace(Fragmnet B)
不要:超过其他同添加片段非法上下文之前。还有在行粘贴代码和异常,如果上面的代码不工作这样我们才能有更好的见解。
编辑:概念建设:
那么我就可以粘贴代码,可以帮助你reslove崩溃,但你所面临的问题是一个基本的Android概念是必须要知道的已经说了很多其他的失误是:
首先尝试使用的
,而不是相对布局
现在,当活动拥有一个片段应该有AW ay在活动和片段之间进行交流 由于片段有其自己的生命周期,完全取决于活动的生命周期。你需要处理片段自己的生命周期,以保存数据并恢复其视图
在你的情况下,你需要通过父活动从片段A到片段B进行通信,所以活动需要通过片段管理器来更改为其他片段的回调 以下是几个环节,它可以帮助:需要时间来阅读这篇
link four 编码快乐:)
试试这个
Dashboard dashboard = new Dashboard();
getChildFragmentManager().beginTransaction().replace(R.id.Content_id_, dashboard).commit();
希望有所帮助。
显示您的xml以及如何调用碎片,以便我们可以更快地帮助您。 –
我只是编辑我的问题。谢谢。 – Butterfly
你解决了这个问题? –