如何将使用XML布局的视图动态添加到ContentView



在我的主活动中,我创建了一个带有子视图的FrameLayout,并将其设置为ContentView。现在,在onCreate()完全执行后,我需要能够动态地在FrameLayout中添加和删除子视图。我通过使用处理程序暂停主线程,然后根据需要添加或删除子视图来实现这一点。

当我处理我以编程方式创建的视图时,这一切都很好,但当我试图对使用XML布局的视图执行同样的操作时,我会从我试图添加到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)

在将视图添加到FrameLayout之前,必须使用Layout充气器从XML对视图进行充气。

最新更新