0

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

当我处理我以编程方式创建的视图时,这一切都很好,但是当我尝试对使用 XML 布局的视图执行相同操作时,我从试图添加到 FrameLayout 的 ViewGroup 中获得空指针异常.

在不使用 Fragments 的情况下,我可以使用哪些特定步骤来实现这一目标?

如果有些人不明白我在问什么,我可以详细说明。如果有帮助,我可以提供代码块,但我认为大多数人会从我的简短解释中了解我正在做的事情的要点。我只是在找人指出我正确的方向。

这是引发异常的 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)
4

1 回答 1

1

在将视图添加到 FrameLayout 之前,您必须使用 LayoutInflater 从 XML 中膨胀视图。

于 2012-11-15T17:11:53.230 回答