Android ViewFlipper充气器非法状态异常

Android ViewFlipper充气器非法状态异常,android,exception,viewflipper,illegalstateexception,inflate,Android,Exception,Viewflipper,Illegalstateexception,Inflate,我有一个loader类,在应用程序启动期间从资源中加载图片 然后我有一个带有一些按钮的主菜单。当我点击一个按钮时,一个新的布局出现在ViewFlipper中,它从loader类加载图片。 当我将ViewFlipper活动退出到主菜单并再次启动ViewFlipper时,我将得到一个非法状态异常 这是我的loader类: public void inflate(){ for(int i =0;i< createArray();i++){ view = LayoutInflat

我有一个loader类,在应用程序启动期间从资源中加载图片

然后我有一个带有一些按钮的主菜单。当我点击一个按钮时,一个新的布局出现在ViewFlipper中,它从loader类加载图片。 当我将ViewFlipper活动退出到主菜单并再次启动ViewFlipper时,我将得到一个非法状态异常

这是我的loader类:

public void inflate(){

    for(int i =0;i< createArray();i++){
    view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.bilder, null);
    viewInflate.add(view);
    }

    Toast.makeText(getApplicationContext(), "" +viewInflate.size(), Toast.LENGTH_LONG).show();
    addPics();
}


    public void addPics(){
    for(int i =0;i< createArray();i++){
        View pic =  viewInflate.get(i).findViewById(R.id.ImageView01);
        View pic2 = viewInflate.get(i).findViewById(R.id.ImageView02);

        ((ImageView) pic).setImageBitmap((Bitmap)frontPic.get(i));
        ((ImageView) pic2).setImageBitmap((Bitmap)backPic.get(i));
    }
}
frontPic、backPic和viewInflate是阵列列表

我知道在添加新的子对象之前必须删除ViewFlipper的所有子对象,但是在哪里

07-16 16:41:46.468: E/AndroidRuntime(26720): java.lang.RuntimeException: Unable to            start activity ComponentInfo{com.example.myapp/com.example.myapp.psuflip}:    java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.os.Looper.loop(Looper.java:137)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.ActivityThread.main(ActivityThread.java:5041)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at java.lang.reflect.Method.invokeNative(Native Method)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at java.lang.reflect.Method.invoke(Method.java:511)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at dalvik.system.NativeStart.main(Native Method)
07-16 16:41:46.468: E/AndroidRuntime(26720): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.view.ViewGroup.addViewInner(ViewGroup.java:3339)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.view.ViewGroup.addView(ViewGroup.java:3210)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.widget.ViewAnimator.addView(ViewAnimator.java:184)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.view.ViewGroup.addView(ViewGroup.java:3155)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.view.ViewGroup.addView(ViewGroup.java:3131)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at com.example.myapp.psuflip.inflate(psuflip.java:392)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at com.example.myapp.psuflip.createFlipper(psuflip.java:374)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at com.example.myapp.psuflip.onCreate(psuflip.java:105)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.Activity.performCreate(Activity.java:5104)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
07-16 16:41:46.468: E/AndroidRuntime(26720):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

您的代码和显示的logcat输出不同步

错误表明,在您的充气方法中,psupflip.java文件的第392行调用了addView,但您没有

所以我猜,你在得到logcat之前移动了一些代码

在您显示的代码中,错误可能仅来自此行:

 flipper.addView((View) LoadingScreen.viewInflate.get(i));       
很可能您使用相同的参数多次调用此代码。因此,将同一视图添加到视图组两次。但是,一个视图只能有一个父视图,不能像这样重新添加到另一个父视图,必须首先将其从其第一个父视图组中删除(logcat确实这么说)

试着更接近和学习,这将帮助你在发展中走得更远

--更新

尝试以下操作以从其父视图中删除视图:

View v = (View) LoadingScreen.viewInflate.get(i);
v.getParent.removeView(v);

您和我们需要logcat来找到错误的原因。你介意把它贴在这里吗?是的,我试图在我的代码中找到错误,所以我可能修改了一些代码。你说得对。我知道我必须先把它移除,但我不知道如何移除。但是,如果我尝试删除视图组,则会出现此错误。我更新了答案,以给出如何从其父视图中删除视图的示例。
View v = (View) LoadingScreen.viewInflate.get(i);
v.getParent.removeView(v);