我是Android开发的新手,并且不断参与布局xml文件中的Inflating视图的引用.我用Google搜索并搜索了开发指南,但仍无法理解其含义.如果有人能提供一个非常简单的例子,那就非常感激了.
我很难让LayoutInflater按预期工作,其他人也是如此:如何使用layoutinflator在运行时添加视图?.
为什么LayoutInflater会忽略我指定的布局参数?例如,为什么我的资源XML中的值layout_width和layout_height值不受尊重?
我正在使用兼容包在我的Android应用程序中使用片段.我在运行2.3.3的Nexus One和Google API 2.2模拟器上测试了该应用程序.
通过布局XML添加片段时,它工作得很好(使用片段标记).
将片段动态添加到FrameLayout时,它不会将片段成功添加到容器中,并且会引发以下错误.
alStateException: The specified child already has a parent. You must call removeView() on the child's parent first
Run Code Online (Sandbox Code Playgroud)
完整的堆栈跟踪如下.
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addViewInner(ViewGroup.java:1976)
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addView(ViewGroup.java:1871)
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addView(ViewGroup.java:1828)
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.view.ViewGroup.addView(ViewGroup.java:1808)
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.NoSaveStateFrameLayout.wrap(NoSaveStateFrameLayout.java:40)
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:743)
05-17 19:44:03.518: DEBUG/UNHANDLED_EXCEPTION(7735): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:933)
05-17 …Run Code Online (Sandbox Code Playgroud) 我是android的新手,我知道这个问题已被提出但我无法得到满意的解释.我的怀疑是:
我希望问题很清楚,如果不是,请在评论中说明.
作为这个问题的后续内容,我想不出有什么理由不能将每个包含的XML布局包装成一<merge>对.
这让我想知道,为什么ADT团队没有将此作为默认行为?
有没有人不想要这种行为?
顺便提一下,标签的Android文档中的解释<merge>比最糟糕的法律协议中的措辞更糟糕:
<merge />在一个布局中包含一个布局时,该标记有助于消除视图层次结构中的冗余视图组.例如,如果主布局是一个垂直LinearLayout,其中两个连续视图可以在多个布局中重复使用,则放置两个视图的可重用布局需要自己的根视图.但是,使用另一个LinearLayout作为可重用布局的根将导致垂直LinearLayout内部的垂直LinearLayout.嵌套LinearLayout除了降低UI性能之外没有任何其他用途.
罗曼,你在哪里?