java - 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)
我该如何解决这个问题?
任何帮助将不胜感激。
解决方案
您可以将其用于 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
}
希望能帮助到你。
推荐阅读
- c# - DotNetCore 路由属性扩展 url
- android - 我的 Sqlite To Listview 有什么问题,它没有显示所需的结果
- reactjs - 反应,地图组件,意外结果
- python-3.x - 从 python 请求上传时,Django 文件对象总是 0 字节
- flyway - 使用 Flyway (DML) 管理数据更改
- sql - 带有连接语句的子查询
- python-3.x - 如何将两个 matplotlib 图导出为带有一些文本的 pdf 报告?
- rpa - 如何在 Blue Prism 中查找/计算未来的时间表 - 后续行动
- javascript - 如何使用 Google Script 发送包含从 Google Form 收集的信息的电子邮件?
- node.js - 每 10 分钟后如何检测 API 数据的变化?