问题:我有MainApp和FrameLayout,我可以从MainApp轻松放入MainFragments.class。我还有一个带有PlugInApp的外部包,其中我有一些其他的PlugInFragment.class。我需要把这个PlugInFragment.class放到MainApp FrameLayout中。看似简单,但事实并非如此。
我无法从外部程序包在MainApp中创建片段对象。真的需要帮助。请。
.. ..更新
好的,我尝试使用DexClassLoader加载PlugiFragment.class。通常,它正在工作..我可以轻松运行其他类,或类的一些方法,但如果我尝试加载PluginFragment,我有错误: - 无法解析我的PlugInFragment的超类,这是从基本Fragment extendet。我认为这是因为Fragment类在andrid-support-v4.jar中,它就像一个私有lib,而不是主android.jar。我尝试重新加载,清理,刷新和其他“跳舞”方法 - 根本没有帮助。有任何想法吗?
.. ..光洁度
好的,我做到了! YEEEH !!
首先我停止使用来自andrid.support.v4的Fragment,我使用来自android.app的常规Fragment,这消除了“无法解决超类错误”。然后我在我的PluginFragment中进行了一些更改:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
int fragment_layoytRID = 0;
try {
//TODO in layout should not use string/color resourses
fragment_layoytRID = container
.getContext()
.getPackageManager()
.getResourcesForApplication(parkageName)
.getIdentifier("plagin_fragment", "layout",
parkageName);
Log.w("PLUGIN", "fragment_layoytRID: " + fragment_layoytRID);
} catch (NameNotFoundException e) {
e.printStackTrace();
}
final XmlResourceParser parser = container.getContext()
.getPackageManager()
.getXml(parkageName, fragment_layoytRID, null);
return inflater.inflate(parser, container, false);
}
这是因为布局从外部mainApp充气..而且它的工作..唯一的问题,在这种情况下布局没有找到@string / @color和其他资源..
答案 0 :(得分:0)
在FrameLayout
内,你需要像这样添加片段:
<fragment android:name="your.namespace.PlugInFragment"
android:id="@+id/list"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="match_parent" />
请注意,您必须将your.namespace.PlugInFragment
更改为其命名空间。