私は、そのフラグメントに対してFrameLayoutを持つActivityを持っています。 私は標準的な方法でフラグメントを追加します。フラグメント内のFragamentを置換する際の例外
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
ProfileFragmentFirst profileFragmentFirst = new ProfileFragmentFirst();
Bundle args = new Bundle();
args.putSerializable(ExtrasTags.ARG_PROFILE_OBJECT, profileObject);
profileFragmentFirst.setArguments(args);
transaction.replace(R.id.fragment_container, profileFragmentFirst);
transaction.commit();
は、これは問題なく完璧に動作します。
フラグメント内には、クリックすると現在アクティブなフラグメントを別のものに置き換える必要があるボタンがあります。 これを行うために活動のメソッドを呼び出します。
@Override
public void startFragment(Fragment fragment) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();
}
私はアプリは、次のエラーので
java.lang.IllegalArgumentException: No view found for id 0x7f0d00cb (com.digle.android:id/fragment_container) for fragment ProfileBadgesFragment{2239633d #1 id=0x7f0d00cb}
で失敗したことを行うと、それは主張し、それがためでframeLayoutを見つけることができません私はそれを以前使っていましたが、断片化しました! もう少し調べて、アクティビティの代わりにレイアウトのフラグメントレイアウトを見ていることが分かりました(私はフラグメントレイアウトにFrameLayoutを追加し、そこに現れた2番目のフラグメントを見ています)。
しかし、このコードは私のアプリのどこかで完全に動作します。
この2つのケースの主な違いは、この場合、最初のフラグメントはデータバインディングを使用しますが、動作する場合はデータバインディングが使用されないことです。 私がクリックしたボタンは、イベントオブジェクトにバインドされています。例えば
:
<Button
..
..
android:onClick="@{clicksListener.onBadgesClick}"
/>
付:
public class ClicksListener {
public void onBadgesClick(View view) {
Log.d(TAG, "onBadgesClick");
ProfileBadgesFragment profileBadgesFragment = new ProfileBadgesFragment();
Bundle args = new Bundle();
args.putSerializable(ExtrasTags.ARG_PROFILE_BADGES, profileObject.userBadgesEntity);
profileBadgesFragment.setArguments(args);
startFragment(profileBadgesFragment);
}
}
そして、もちろん、結合。クリックは完全に機能しますが、前述のように、アクティビティレイアウトの代わりにフラグメントレイアウトが表示されます。
ビルドツール23.0.3を使用していて、それ以外のものはすべて最新です。
あなたを助けることを願っています 'NOビューは、ID 0x7f0d00cb(com.digle.android:id/fragment_container)'あなたは、そのインスタンスでは使用できない容器の中にあなたの断片を入れしようとしているが見つかりません。フラグメント内のフラグメントを置き換えますか? – Kathi
それは問題です。それをやろうとしていますが、私はしたくないし、最初のフラグメントがデータバインディングを使って構築されている場合にのみ起こります。 – theblitz