2011-05-26 18 views
1

這也是一個設計問題。我不知道最好的方式來設計有很多活動,以及如何在訪問應用程序資源的同時將它們打包成軟件包。如何從子包中訪問主要的資源/佈局/文件?

我有一個應用程序,它允許用戶登錄和訪問一個選項卡式的活動,可以訪問許多模塊。如果他們點擊一個模塊,他們將加載模塊,該模塊又將包含選項卡式活動。

目前,我有這個應用程序內的3包:

  • com.appname.app(許多活動,我想分手了,登錄模塊列表等)
  • com.appname.app。 XML(XML處理程序)
  • com.appname.app.Utils(靜態UTIL類等)

我想添加一個新的包來包含我的所有模塊所以像

  • com.appname.app.Modules(甚至一個單獨的包,每個模塊)

但後來我再也無法訪問主應用程序資源,而不指他們採用了全包的名稱,如setContentView(com.appname.app.R.layout.channel_list);

顯然在任何com.appname.app活動中,我只是通過setContentView(R.layout.channel_list);引用資源,如佈局。

我以爲子包(子目錄)應該有權訪問父級的資源,而不必使用com.appname.app.R.layout.channel_list而不是R.layout.channel_list。這就是爲什麼我假設的東西是錯誤與我的設計

同樣的問題也適用於訪問字符串,繪製等資源......

我敢肯定,這是一件很基本的我失蹤。我試過手動導入「父」包,也沒有工作。

這是我應該如何做的事情?或者我應該以某種方式創建每個模塊包內的資源文件?或者有另一種方式我應該處理設計/拆分我的應用程序?

+1

你試過了嗎 - import com.appname.app.R; – doNotCheckMyBlog 2011-05-26 08:21:55

回答

5

由於Android的預編譯器將編譯所有引用到R.class文件並將其放置在主包有沒有更好的辦法比,無論你想使用它們

import com.appname.app.R; 

明確導入資源所以不需要完整的限定符。

+0

乾杯的工作,但與'進口android.r;衝突;'罰款後刪除它 – wired00 2011-05-26 08:27:21

+0

使更多的意義。我沒有真正看過R.java文件,而是一眼就看到靜態整數。在正確地「看」它之後,我看到它只是我需要導入的一個類,就像你說的那樣。我只是不確定我是否在完全錯誤的設計方面做事。再次感謝。 – wired00 2011-05-26 08:36:35