![](/img/trans.png)
[英]How can I dynamically add layouts and views to an Android XML layout file?
[英]How can I dynamically add Views that use XML Layouts to the ContentView?
在我的主活动中,创建带有子视图的FrameLayout并将其设置为ContentView。 现在,在完全执行onCreate()之后,留在同一个Activity中,我需要能够动态地从FrameLayout中添加和删除子视图。 我通过使用Handler暂停主线程,然后根据需要添加或删除子视图来实现这一点。
当我处理以编程方式创建的View时,所有这些都很好用,但是当我尝试对使用XML布局的View进行同样的处理时,我从试图添加到FrameLayout的ViewGroup中获得了空指针异常。 。
在不使用片段的情况下,是否可以使用特定的步骤来实现此目的?
如果有些人不明白我的要求,我可以详细说明。 如果可以帮助的话,我可以提供代码块,但我认为大多数人都会从我的简短解释中得到我正在做的要旨。 我只是在寻找可以指引我正确方向的人。
这是引发了异常的LogCat块:
11-15 13:40:42.977: E/AndroidRuntime(14956): FATAL EXCEPTION: main
11-15 13:40:42.977: E/AndroidRuntime(14956): java.lang.NullPointerException
11-15 13:40:42.977: E/AndroidRuntime(14956): at android.view.ViewGroup.addView(ViewGroup.java:1821)
11-15 13:40:42.977: E/AndroidRuntime(14956): at android.view.ViewGroup.addView(ViewGroup.java:1808)
11-15 13:40:42.977: E/AndroidRuntime(14956): at com.beastcodes.framework.impl.AndroidGame.addScreenFragment(AndroidGame.java:207)
11-15 13:40:42.977: E/AndroidRuntime(14956): at com.beastcodes.framework.impl.AndroidGame.addAllScreenFragments(AndroidGame.java:213)
11-15 13:40:42.977: E/AndroidRuntime(14956): at com.beastcodes.framework.impl.AndroidGame.access$2(AndroidGame.java:211)
11-15 13:40:42.977: E/AndroidRuntime(14956): at com.beastcodes.framework.impl.AndroidGame$3.run(AndroidGame.java:61)
11-15 13:40:42.977: E/AndroidRuntime(14956): at android.os.Handler.handleCallback(Handler.java:587)
11-15 13:40:42.977: E/AndroidRuntime(14956): at android.os.Handler.dispatchMessage(Handler.java:92)
11-15 13:40:42.977: E/AndroidRuntime(14956): at android.os.Looper.loop(Looper.java:130)
11-15 13:40:42.977: E/AndroidRuntime(14956): at android.app.ActivityThread.main(ActivityThread.java:3691)
11-15 13:40:42.977: E/AndroidRuntime(14956): at java.lang.reflect.Method.invokeNative(Native Method)
11-15 13:40:42.977: E/AndroidRuntime(14956): at java.lang.reflect.Method.invoke(Method.java:507)
11-15 13:40:42.977: E/AndroidRuntime(14956): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907)
11-15 13:40:42.977: E/AndroidRuntime(14956): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)
11-15 13:40:42.977: E/AndroidRuntime(14956): at dalvik.system.NativeStart.main(Native Method)
您必须先使用LayoutInflater从XML扩展视图,然后再将其添加到FrameLayout。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.