首页 > 解决方案 > Android 的 Intent 问题

问题描述

我有两个活动 MainActivity 和 GameOverscreen 活动。在我的 MainActivity 中,我添加了两个这样的视图:

myView1 = new  MyView1(this);
RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(480, 
900);
myView1.setLayoutParams(params1);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.relative1);
myView1.setBackgroundColor(Color.YELLOW);
layout1.addView(myView1);

myView2 = new MyView2(this);
RelativeLayout.LayoutParams params2 = new 
RelativeLayout.LayoutParams(300,300);
myView2.setLayoutParams(params2);
RelativeLayout layout2 = (RelativeLayout) findViewById(R.id.relative2);
myView2.setBackgroundColor(Color.GREEN);
layout2.addView(myView2);

当我的游戏结束时 Gameoverscreen Activity 开始正确,但是当我触摸它并尝试再次启动 MainActivity Activity 时,我的应用程序出现以下异常:

 java.lang.RuntimeException: Unable to start activity 
 java.lang.IllegalStateException: The specified child already has a parent. 
 You must call removeView() on the child's parent first. 
 at 
 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2184) 
 at 
 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233) 
 at android.app.ActivityThread.access$800(ActivityThread.java:135) 
 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
 at android.os.Handler.dispatchMessage(Handler.java:102) 
 at android.os.Looper.loop(Looper.java:136) 
 at android.app.ActivityThread.main(ActivityThread.java:5001) 
 at java.lang.reflect.Method.invokeNative(Native Method) 
 at java.lang.reflect.Method.invoke(Method.java:515)  
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601) 
 at dalvik.system.NativeStart.main(Native Method) 
 Caused by: 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:3562) 
 at android.view.ViewGroup.addView(ViewGroup.java:3415) 
 at android.view.ViewGroup.addView(ViewGroup.java:3360) 
 at android.view.ViewGroup.addView(ViewGroup.java:3336) 
 at com.example.admin.tetris.MainActivity.onCreate(MainActivity.java:74) 
 at android.app.Activity.performCreate(Activity.java:5231) 
 at 
 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
 at 
 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)

我该如何解决这个问题?

任何帮助将不胜感激。

标签: javaandroidandroid-intentandroid-activitylayout

解决方案


您可以将其用于 onCreate() 中的两个视图

 View myView1 = new  View(this);
            RelativeLayout.LayoutParams params1 = new RelativeLayout.LayoutParams(480,
                    900);
            myView1.setLayoutParams(params1);
            RelativeLayout layout = (RelativeLayout) findViewById(R.id.relative1);
            myView1.setBackgroundColor(Color.YELLOW);

            if (layout!=null){

            layout.removeAllViews();//Remove all views here
            layout.addView(myView1);// add views again

            } else{
                layout.addView(myView1);// add views as you do it before
            }

希望能帮助到你。


推荐阅读