2016-09-21 130 views
-2

我有一個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> 
+0

顯示您的xml以及如何調用碎片,以便我們可以更快地幫助您。 –

+0

我只是編輯我的問題。謝謝。 – Butterfly

+0

你解決了這個問題? –

回答

0

以下是解決方案。 將片段替換爲另一個片段

Dashboard dashboard = new Dashboard(); getActivity()。getSupportFragmentManager()。beginTransaction()。replace(android.R.id.content,dashboard).commit();

0

您可以使用接口解決這個問題。

您可以創建一個擴展主要活動的接口。

public interface MyInterface(){ 
    void goToFragmentB(); 
} 

現在,在您的mainActivity你實現這個接口並且設置了虛空方法所需的方式與片段B.

更換碎片A在您的片段,你可以retrive活動。現在只需施放此活動MyInterface的:

MyInterface myInterface = (MyInterface) myActivityRetrieved; 

而且onButtonClick你可以叫

myInterface.goToFragmentB(); 

和你做。

希望這有助於

0

務必:

 getSupportFragmentManager().beginTransaction().replace(Fragmnet B) 

不要:超過其他同添加片段非法上下文之前。還有在行粘貼代碼和異常,如果上面的代碼不工作這樣我們纔能有更好的見解。

編輯:概念建設:

那麼我就可以粘貼代碼,可以幫助你reslove崩潰,但你所面臨的問題是一個基本的Android概念是必須要知道的已經說了很多其他的失誤是:

首先嚐試使用的

​​

,而不是相對佈局

現在,當活動擁有一個片段應該有AW ay在活動和片段之間進行交流 由於片段有其自己的生命週期,完全取決於活動的生命週期。你需要處理片段自己的生命週期,以保存數據並恢復其視圖

在你的情況下,你需要通過父活動從片段A到片段B進行通信,所以活動需要通過片段管理器來更改爲其他片段的回調 以下是幾個環節,它可以幫助:需要時間來閱讀這篇

link one

link two

link 3

link four 編碼快樂:)

+0

我剛編輯我的代碼。往上看。謝謝。 – Butterfly

+0

看到我編輯的答案..!這將有助於確保您缺少一些基本的Android概念 – DevKRos

+0

非常感謝您對我的理解。我會閱讀你的鏈接,並希望這將解決我的問題。 – Butterfly

0

試試這個

Dashboard dashboard = new Dashboard(); 
getChildFragmentManager().beginTransaction().replace(R.id.Content_id_, dashboard).commit(); 

希望有所幫助。