2011-07-23 39 views
47

在android中,我不太確定我是否理解R類。我經歷的數獨例子,我有這樣的代碼片段:瞭解Android中的R類

switch (v.getId()) // the id of the argument passed is evaluated by switch statement 
{ 
    case R.id.about_button: // 
    Intent i = new Intent(this, about.class); 
    startActivity(i); 
    break; 
    // More buttons go here (if any) ... 
} 

我全新到Java,但是從我收集它看起來像它採取輸入(觸摸屏被觸及按鈕)並評估參數。然後,如果關於按鈕被識別,則設置案例陳述,並且創建新的界面屏幕,然後導航到電話上。

這是正確的嗎?

如果我認爲正確的主旨,爲什麼與「R」類交易?

爲什麼它被稱爲識別按鈕的ID?

我以爲超類(在這個項目中)是SudokuActivity類。

+1

[Android:什麼是R?爲什麼它是如此神祕?](http://stackoverflow.com/questions/4953077/android-what-is-r-why-is-it-so-cryptic) – nbro

回答

68

R.java是動態生成的類,在構建過程中爲動態標識所有資產(從字符串到Android小部件到佈局)而創建,以供Android應用程序中的java類使用。請注意,R.java是Android專用的(儘管您可能能夠將其複製到其他平臺,但非常方便),因此它與Java語言結構沒有多大關係。看看here,瞭解更多詳情。

+0

是否有任何資源如何複製'R .java'構建其他項目的過程? –

32

R是一個只包含公共常量的類。 (公共靜態最終)。

它是一個生成的類(由Eclipse的Android插件),它反映了您在res文件中定義的各種值。

舉例來說,你應該是這樣的:

android:id="@+id/about_button" 

在項目佈局/菜單的XML文件的一個地方,一旦你寫的是,Eclipse會產生在R文件中的常數(你可以在gen/PACKAGE/R.java找到它)

閱讀Resource guide in Android Developers瞭解更多關於這方面的信息。

15

R類是在編譯代碼之前由您的資源中的Android工具生成的。它包含您可以在項目中引用的每個資源的分配數值常量。例如,您擁有包含about_button的XML資源文件。如果您沒有R類,則必須使用字符串「about_button」在代碼中引用它。如果你在這個字符串中犯了一個錯誤,你只會在你運行你的應用程序時瞭解它。用R你會在編譯時更早地看到錯誤。

R的結構可以通過它的內部類來引用資源。例如,R.id包含id常量,R.layout包含佈局常量。