2014-02-21 77 views
0

的問題得到片段:我有MainApp與FrameLayout裏,是我可以輕鬆把MainFragments.class從MainApp。另外我有PlugInApp的外部停車,我有一些其他的PlugInFragment.class。我需要將此PlugInFragment.class放入MainApp FrameLayot中。看起來很簡單,但事實並非如此。如何從外部PAKAGE

我無法創建從外部封裝在MainApp片段對象。真的需要幫助。請。

..update ..

好吧,我試試負載PlugiFragment.class使用DexClassLoader。一般情況下,它的工作。我可以輕鬆運行其他類,或者類的一些方法,但如果我嘗試加載PluginFragment,我有錯誤: - 無法解析我PlugInFragment,這是extendet從基本的片段超。我認爲這是因爲Fragment類在andrid-support-v4.jar中,它就像一個私有庫,不在主android.jar中。我嘗試重新加載,清理,刷新和其他「跳舞」方法 - 完全沒有幫助。有任何想法嗎?

..finish ..

好的,我做到了! YEEEH!

首先停止使用片段從andrid.support.v4,我使用android.app定期片段,這消除了「無法解決超錯誤」。然後我在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 inflaiting ..它的工作..唯一的問題,在這種情況下的佈局我以前不覺得@string/@color和其他資源的開發..

+0

爲什麼?如果您導入** PlugInFragment.class **包,然後將其用作** MainFragments.clas **的片段,是否存在問題?你發現了什麼樣的問題? –

+0

你已經試過了什麼?你是否想要在FrameLayout中獲取片段? –

+0

插件的一個想法是使用插件而不改變主應用程序,因爲我不能在項目中添加插件,並編譯新的主應用程序。主要應用程序是complit - 不可更改。插件是另一個apk,從插件到mainapp我可以得到活動,servis,brodcast,提供者,resouses,classnames ..從mainapp我可以加載插件actvity意圖 - 沒有問題,但就像加載與她的UI蟻函數下一個應用程序。 。我想加載插件到mainapp - 在frameLayout喜歡加入pluginFragment - 在這種情況下,它仍然將mainApp用戶界面和funcional - 與額外plagin insaid ..更優雅的我.. – user3337390

回答

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到任何它的命名空間是。

+0

我不會更改片段動態代碼.. – user3337390