Вы получили исключение NullPointerException, верно? (Проверьте свой LogCat!)
Причина:
Вы создаете Button как переменную-член с this
в качестве параметра. Это может вызвать некоторые проблемы, так как this
может не быть определено при вызове new Button(this)
. Переместите инициализацию в onCreate
Ваш RLayout
будет нулевым, и здесь я очень уверен. Причина в том, что вы не можете позвонить findViewById()
, прежде чем позвонить setContentView()
. Если вы вызываете его раньше, Android не знает, где искать, и возвращает ноль.
обновление
Поскольку вы немного изменили свой вопрос, вот мой обновленный ответ:
Вы устанавливаете свой контент на R.layout.register
и после этого снова его раздувает.
Мое решение для вас: просто используйте setContentView(R.layout.register)
, затем используйте findViewById(R.id.layout_id)
и, наконец, создайте и добавьте свою кнопку:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
RelativeLayout RLayout = (RelativeLayout) findViewById(R.id.layout_id);
RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT
);
Button btnCreateNew = new Button(this);
btnCreateNew.setText("Create New User");
btnCreateNew.offsetTopAndBottom(10);
btnCreateNew.offsetLeftAndRight(10);
RLayout.addView(btnCreateNew, p);
}
Конечно, вы также можете добавить кнопку непосредственно в макет XML. Я бы предпочел этот способ, потому что у вас есть лучшее разделение между макетом и кодом.
Базовая структура XML (стиль, который вы хотите):
<RelativeLayout android:id="@+id/layout_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<Button android:id="@+id/button_id"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:text="@string/button_text"/>
</RelativeLayout>
Причиной появления пустого экрана было то, что вы добавили кнопку в новый созданный RLayout
, но этот макет никогда не был частью вашего экрана (никогда не добавлялся setContentView()
)