如何使用基本布局并在android

时间:2016-03-20 10:41:04

标签: java android android-layout

我正在尝试在layout.xml文件上创建一个Linear Layout和一个editText,这里是java代码:

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为空?

2 个答案:

答案 0 :(得分:1)

您必须使用布局为自定义视图充气,并在此视图中查找线性布局... 这样做:

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

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

答案 1 :(得分:0)

您是否已加载要用作基础的xml文件?

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