2011-06-16 35 views
1

有什麼辦法在自動生成的R文件中創建內部類? 眼下R檔看起來像這樣:Android R文件中的內部類

public static final class id { 
    public static final int button1=0x7f020000; 
    public static final int button2=0x7f020001; 
    public static final int text1=0x7f020002; 
} 

並訪問它,你應該鍵入

R.id.button1 

我怎麼想它是這樣的:

public static final class id { 
    public static final class activity1 { 
    public static final int button1=0x7f020000; 
    } 
    public static final int button1=0x7f020001; 
} 

所以我可以訪問它

R.id.activity1.button1 

它可以手動編輯該文件,但是這不是我要找的

更新的方式:我需要這個,因爲我目前的項目包括大約20項活動,在每個5-30部件他們。我跳過了很多的IDS(大多爲按鍵和佈局),但它仍然是不舒適的鍵入類似

AcEventListToolbarUserImageView

(AcEventList - 活動的名稱,工具欄 - 框架,UserImageView - 用戶圖片)

更新2:部分解決方案是: 在活動佈局XML

<TextView android:id="@+id_ActivityName/WidgetName" /> 

在Java代碼將是:

R.id_ActivityName.WidgetName 

優點:

看到鍵入 「R.id_」 後,所有的活動列表;

通過鍵入「R.id_ActivityYouNeed」,查看您需要的活動的所有窗口小部件ID。

回答

2

R.java文件的自動生成純粹是作爲一種機制,允許您輕鬆地從您的代碼中引用您的res層次結構的內容。因此,您不能創建子層次結構。

簡單的解決方案是將上下文添加到您的項目名稱。例如,使用@+id/Activity1_button1,您可以將其作爲R.id.Activity1_button1訪問。

+0

您的回答指出了我的方式 - 我想在包名稱中使用下劃線,而不是在小部件名稱中,因此將會有幾個包以ID_名稱命名爲佈局。 – 2011-06-16 13:30:51

+0

我建議不要用這種方法搞亂包名。在某些情況下,Android *期望*一個固定的軟件包名稱,如果你去弄亂它們,你可能會發現有些東西停止工作。 – 2011-06-16 14:07:12

+0

僅供將來使用 - 在什麼情況下,android需要固定的資源包名稱(例如,「id」而不是「id_SomeActivity」)?我試過使用id_方法,發現它比使用ActivityName_WidgetName更舒服。但如果有可能的問題,我想做好準備 – 2011-06-16 14:43:27

1

R文件是自動創建的,它不應該被編輯...即使你嘗試手動執行,當你運行你的代碼時,一個新的R文件將被創建。你能否給出一個你需要這樣做的理由?

0

我不知道這是否有幫助,但你可以定義你自己的層次結構的Id包含的類是根據您的實際資源定義。您仍然需要輸入完全限定的名稱,但只能輸入一次。

像這樣:

public static final class MyResources { 
    public static final class activity1 { 
     public static final int button1=R.id.blahblah_button1; 
    } 
    public static final int button1=0x7f020001; 
} 

然後把它們稱爲: MyResources.activity1。BUTTON1;