我有Activity
并在Fragment A
内打开RelativeLayout
。之后,当我点击同一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)"
我认为我的问题是,当我在Fragment B
(不在活动中)时,我正试图在Activity
中打开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>
答案 0 :(得分:0)
您可以使用界面解决此问题。
您可以创建扩展主要活动的界面。
public interface MyInterface(){
void goToFragmentB();
}
现在,在mainActivity中实现了这个接口,并设置了void方法,将片段A替换为片段B。
在您的片段中,您可以检索活动。现在只需将此活动转换为MyInterface:
MyInterface myInterface = (MyInterface) myActivityRetrieved;
onButtonClick你可以打电话
myInterface.goToFragmentB();
你已经完成了。
希望这会有所帮助
答案 1 :(得分:0)
执行:
getSupportFragmentManager().beginTransaction().replace(Fragmnet B)
不要:像以前一样使用非法上下文添加相同的片段.ALSO如果上面的代码不起作用,则将代码和异常粘贴到一行,这样我们就可以获得更好的洞察力。
编辑:构建概念:
好吧,我可以粘贴代码,可以帮助你重新解决崩溃,但你面临的问题是一个基本的android概念,必须要知道已经说了很多其他的错误:
首先尝试使用
<FrameLayout
android:height="match_parent"
android:width"match_parent"/>
而不是相对布局
现在当活动持有一个片段时,应该有一种方法在它所持有的活动和片段之间进行通信 由于Fragment有自己的生命周期,完全取决于活动的生命周期。您需要处理片段自身的生命周期才能保存数据并恢复其视图
在您的情况下,您需要通过父活动从片段A传递到片段B,因此活动需要回调以通过片段管理器更改为其他片段 以下几个链接可以提供帮助:花时间阅读本文
link four 快乐编码:)
答案 2 :(得分:0)
试试这个
testImg.image = img
希望有所帮助。
答案 3 :(得分:0)
这是解决方案。 用于将片段替换为另一个片段
仪表板仪表板=新仪表板(); getActivity()。getSupportFragmentManager()。beginTransaction()。replace(android.R.id.content,dashboard).commit();