Programmatically adding buttons in Android
by
, January 7th, 2012 at 12:59 AM (34425 Views)
Well I have had a frustrating few hours working out how to add buttons dynamically. Here is how I did it. Firstly, you need to give the layout an ID in the xml file.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/buttonlayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > </LinearLayout>
Note the id: buttonlayout. Now you need to access the layout in onCreate and create some layout parameters.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button myButton = new Button(this); myButton.setText("Push Me"); LinearLayout ll = (LinearLayout)findViewById(R.id.buttonlayout); LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); ll.addView(myButton, lp); }
The reason I was having such a crappy time with this is because I foolishly placed setContentView(R.layout.main) at the bottom. You are not able to access the ID of a view with findViewById(R.id.buttonlayout) until you have set the content view. I was getting a null pointer exception which causes a Force close.