2012-11-20 23 views
0

即時通訊android新手編程。如何生成我在java類中創建的ID爲r.java

即時知道如果它是能夠生成ID i的java類創建的R.java

我要生成的ID是nBtnLayoutlist。

public class classABC extends Activity { 
    private int nBtnLayoutlist = 20; 

    private OnClickListener onClick() { 
     return new OnClickListener() { 

      public void onClick(View v) { 

      nBtnLayout = (LinearLayout)findViewById(R.id.nBtnLayoutList); 

      } 
     }; 
    } 

    private LinearLayout newBtnLayout(){ 
    LinearLayout nBtnLayout = new LinearLayout(this); 
    final LayoutParams lparams = new LayoutParams(LayoutParams.MATCH_PARENT,  LayoutParams.WRAP_CONTENT); 
    nBtnLayout.setOrientation(LinearLayout.VERTICAL); 
    nBtnLayout.setLayoutParams(lparams); 
    nBtnLayout.setWeightSum(100); 
    nBtnLayout.setId(nBtnLayoutList); 
    return nBtnLayout; 

} 
+0

但IM一樣不斷採用常在通話 [此處輸入鏈路描述] [1] [1]:http://stackoverflow.com/questions/13471031/android-linearlayout-null-exception – Daryl

回答

2

在R.java的ID從您的.xml文件的內容生成時產生的。 R.java不能手動修改,並且在運行時無法修改。

如果你願意,你可以通過在res/values宣佈它在一些文件中定義的id resource(文件可以有任何名稱):

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <item 
     type="id" 
     name="id_name" /> 
</resources> 

,你可以一直設置視圖的ID在佈局呼叫setId(int)(因爲你已經在做)。

編輯:如果你想如

nBtnLayout.setId(nBtnLayoutList); 

,那麼你需要使用在具有新的問題 呼叫如

nBtnLayout = (LinearLayout)findViewById(nBtnLayoutList); // NOT R.id.nBtnLayoutList 
+0

sry我錯過了nBtnLayoutList的聲明 – Daryl

+0

@ user903933 - 你問你是否可以使用這樣的ID ,獨立於R.java?如果是這樣,答案是「是」。但除非需要動態生成ID,否則我會將該ID定義爲資源,以確保您的ID與任何生成生成的ID值之間沒有衝突。 (碰撞的機率很小,但爲什麼要碰碰運氣呢?) –

0

-nBtnLayoutList是到的LinearLayout的參考。

-您可以通過在setId()方法中傳遞整數來設置標識爲LinearLayout

如:

nBtnLayout.setId(1);