2016-03-20 68 views
1

我'一個基地佈局和定製它試圖建立一個線性佈局和這裏layout.xml文件的EDITTEXT基地是java代碼:如何使用Android的

private EditText editText(int _intID) { 
     EditText editText = (EditText)findViewById(R.id.player_name); 
     editText.setId(_intID); 
     editText.setHint("Element "+_intID); 
     editTextList.add(editText); 

     return editText; 
    } 

    private LinearLayout linearlayout(int _intID) 
    { 

     LinearLayout LLMain= (LinearLayout)findViewById(R.id.linear_player_base); 

     LLMain.setId(_intID); 
     LLMain.addView(editText(_intID)); 

     LLMain.setOrientation(LinearLayout.VERTICAL); 
     linearlayoutList.add(LLMain); 
     return LLMain; 

    } 

這裏是XML佈局我想爲基地,使用方法:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:layout_marginBottom="5dp" 
    android:layout_weight="1" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingLeft="40dp" 
    android:paddingRight="40dp" 
    android:id="@+id/linear_player_base"> 
<EditText 
    android:id="@+id/player_name" 
    android:background="@drawable/input" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:inputType="text" 
    android:imeOptions="actionSend" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:gravity="center_horizontal" 
    /> 
</LinearLayout> 

我不明白爲什麼當我這樣做:

LinearLayout LLMain= (LinearLayout)findViewById(R.id.linear_player_base); 
and then : 

LLMain.setId(_intID);

我有這樣的錯誤:Attempt to invoke virtual method 'void android.widget.LinearLayout.setId(int)' on a null object reference

爲什麼LLMain爲空?

回答

1

與你佈置你必須膨脹的自定義視圖,並在此視圖中找到線性佈局... 做這樣的:

LayoutInflater inflater = getLayoutInflater(); 
View v = inflater.inflate(R.layout.playerLayout, null); 

LinearLayout LLMain= (LinearLayout) v.findViewById(R.id.linear_player_base); 
+0

完美!非常感謝 ! – fandro

+0

非常感謝:-) – jonhid

0

你有沒有加載這個xml文件,你想用作基地?

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.yourLayoutNameHere); 
+0

我有我的主要佈局設置是這樣的: 的setContentView(R.layout.MainLayout); 但這個佈局是第二個叫做:playerLayout我需要設置它呢? – fandro