ViewPager有一个ListView片段 - 指定的孩子已经有父有一个、片段、孩子、ViewPager

2023-09-08 09:30:50 作者:离开吧.

所以,我会说,我已经看到了其他几个人岗完全相同的错误开始。但是,我在这里,我尝试了所有十个不同的解决方案和我仍然得到完全相同的堆栈跟踪和ANR的阶段。我现在用的是标准的选项卡+刷卡模板,并没有改变一个单一的东西就可以了,除了设置的第一页返回ListView的片段,我会在下面显示的。

下面是code我的片段。 CacheFrament 很简单,就是扩展 android.support.v4.app.Fragment A超一流的。在这种情况下,我都试过只有两个返回列表视图,其母公司,既无济于事。

 公共类RoutesFragment扩展CacheFragment {

    @覆盖
    公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,捆绑savedInstanceState){
        查看查看= inflater.inflate(R.layout.list_view_layout,集装箱);
        listView.setAdapter(新ArrayAdapter<字符串>(getActivity(),android.R.layout.simple_list_item_1,新的String [] {无路由可用}));

        返回查看;
    }
}
 

这是我使用的片段布局,我本来在ListView作为父母,也没有工作。

 < LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
              机器人:layout_width =match_parent
              机器人:layout_height =match_parent>

    < ListView控件的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
              机器人:layout_width =match_parent
              机器人:layout_height =match_parent
              机器人:ID =@ + ID / main_list_view/>

< / LinearLayout中>
 

最后,这是堆栈跟踪我不断收到。请注意,这是完全一样的错误我已经得到了每一次。

 十一月七号至28日:54:43.747 15074-15074 /? E / AndroidRuntime:致命异常:主要
        java.lang.IllegalStateException:指定的孩子已经有一个父。你必须先调用removeView()对孩子的家长。
        在android.view.ViewGroup.addViewInner(ViewGroup.java:3387)
        在android.view.ViewGroup.addView(ViewGroup.java:3258)
        在android.view.ViewGroup.addView(ViewGroup.java:3203)
        在android.view.ViewGroup.addView(ViewGroup.java:3179)
        在android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40)
        在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)
        在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
        在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
        在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
        在android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
        在android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
        在android.support.v4.view.ViewPager.populate(ViewPager.java:1064)
        在android.support.v4.view.ViewPager.populate(ViewPager.java:911)
        在android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432)
        在android.view.View.measure(View.java:15364)
        在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4824)
        在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        在android.view.View.measure(View.java:15364)
        在android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
        在android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
        在android.view.View.measure(View.java:15364)
        在android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4824)
        在android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        在com.android.internal.policy.impl.PhoneWindow $ DecorView.onMeasure(PhoneWindow.java:2359)
        在android.view.View.measure(View.java:15364)
        在android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1974)
        在android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1217)
        在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1390)
        在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1110)
        在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:4472)
        在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:725)
        在android.view.Choreographer.doCallbacks(Choreographer.java:555)
        在android.view.Choreographer.doFrame(Choreographer.java:525)
        在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:711)
        在android.os.Handler.handleCallback(Handler.java:615)
        在android.os.Handler.dispatchMessage(Handler.java:92)
        在android.os.Looper.loop(Looper.java:137)
        在android.app.ActivityThread.main(ActivityThread.java:4918)
        在java.lang.reflect.Method.invokeNative(本机方法)
        在java.lang.reflect.Method.invoke(Method.java:511)
        在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1004)
        在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
        在dalvik.system.NativeStart.main(本机方法)
 
android关于viewpager子页的edittext文本获取问题

任何帮助是极大的AP preciated。这个错误基本上是停滞不前的一切。

解决方案

 查看视图= inflater.inflate(R.layout.list_view_layout,NULL);
 

充气视图时,否则容器将是你的膨胀观点的家长,你应该使用空的容器。

So I will start off by saying that I have seen several other people post with the exact same error. However, I am at the stage where I have tried all ten different solutions and am still getting the exact same stack trace and ANR. I am using the standard Tabs + Swipe template and have not changed a single thing on it with the exception of setting the first page to return the ListView fragment I will show below.

Below is the code for my fragment. CacheFrament is simply a super class that extends android.support.v4.app.Fragment. In this case, I have tried both returning the listview only, and its parent, both to no avail.

public class RoutesFragment extends CacheFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.list_view_layout, container);
        listView.setAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, new String[]{"No Routes Available"}));

        return view;
    }
}

This is the layout I'm using for the fragment, I originally had the ListView as the parent, which also didn't work

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <ListView xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:id="@+id/main_list_view"/>

</LinearLayout>

Finally, this is the stack trace I keep getting. Note that this is the exact same error I have gotten every single time.

07-28 11:54:43.747  15074-15074/? E/AndroidRuntime: FATAL EXCEPTION: main
        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:3387)
        at android.view.ViewGroup.addView(ViewGroup.java:3258)
        at android.view.ViewGroup.addView(ViewGroup.java:3203)
        at android.view.ViewGroup.addView(ViewGroup.java:3179)
        at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
        at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:461)
        at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:1064)
        at android.support.v4.view.ViewPager.populate(ViewPager.java:911)
        at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1432)
        at android.view.View.measure(View.java:15364)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4824)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at android.view.View.measure(View.java:15364)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:833)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
        at android.view.View.measure(View.java:15364)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4824)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
        at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2359)
        at android.view.View.measure(View.java:15364)
        at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1974)
        at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1217)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1390)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1110)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4472)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
        at android.view.Choreographer.doCallbacks(Choreographer.java:555)
        at android.view.Choreographer.doFrame(Choreographer.java:525)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
        at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4918)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771)
        at dalvik.system.NativeStart.main(Native Method)

Any help is greatly appreciated. This bug is basically stalling everything.

解决方案

View view = inflater.inflate(R.layout.list_view_layout, null);

You should use null container when inflating the view, else the container is going to be the parent of your inflated view.