medyo/Dynamicbox

How to use in a fragment?

pengkshu opened this issue · 5 comments

rootView = inflater.inflate(R.layout.game_grid, container, false);//fragment layout
box = new DynamicBox(getActivity(), rootView);
box.showLoadingLayout();
the above is how I use in fragment.But it have some mistake:

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:3589)
at android.view.ViewGroup.addView(ViewGroup.java:3442)
at android.view.ViewGroup.addView(ViewGroup.java:3387)
at android.view.ViewGroup.addView(ViewGroup.java:3363)
at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:951)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:486)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1073)
at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1441)
at android.view.View.measure(View.java:16704)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5152)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16704)

medyo commented

hi @pengkshu
try to use getView() instead of rootView

hi @medyo
It also don't work. I think getView() is null.

Logcat show:
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at com.example.demo.view.DynamicBox.(DynamicBox.java:53)()

In DynamicBox.java:53 :Class viewClass = mTargetView.getClass(); mTargetView is getView().

medyo commented

Don't touch fragment view initialisation on onCreateView
Move your DynamicBox to onActivityCreated

@Override
public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        DynamicBox mBox = new DynamicBox(getActivity(), MyView);
}
medyo commented

If issue still persists, try to wrap your fragment view using a LinearLayout or RelativeLayout

@medyo oh,I'm so sorry too late to reply your answer.When I move the DynamicBox to onActivityCreated, it work. Thinks