Initializing TableLayout in XML and programmatically filling it - Android (java)

uangonline

New Member
I am trying to initialize a TableLayout in XML and then fill it in programmatically. Here is my XML, java and LogCat output.Highscores.java\[code\]public class Highscores extends Activity { TableLayout table; TableRow rowHeader, row1, row2, row3, row4, row5, row6, row7, row8, row9, row10; TextView rank, percentage, score; Button btn1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.highscoresmain); TableLayout table = (TableLayout)findViewById(R.id.tableLayout); TextView rank = (TextView)findViewById(R.id.rank); rank.setText("RANK"); TextView percentage = (TextView)findViewById(R.id.percentage); percentage.setText("PERCENTAGE"); TextView score = (TextView)findViewById(R.id.score); score.setText("SCORE"); TableRow rowHeader = (TableRow)findViewById(R.id.rowHeader); rowHeader.addView(rank); //Line 39 rowHeader.addView(percentage); rowHeader.addView(score); Button btn1 = (Button)findViewById(R.id.homeBtn); table.addView(rowHeader, new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); btn1.setOnClickListener(new OnClickListener() { public void onClick(View arg0) { Intent intent = new Intent(Highscores.this, MainMenu.class); startActivity(intent); } }); }}\[/code\]highscoresmain.xml\[code\]<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id = "@+id/tableLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0" android:padding="5dp"> <TableRow android:layout_height="wrap_content" android:id="@+id/rowHeader"> <TextView android:id="@+id/rank" android:layout_height="wrap_content" /> <TextView android:id="@+id/percentage" android:layout_height="wrap_content" /> <TextView android:id="@+id/score" android:layout_height="wrap_content" /> </TableRow> </TableLayout>\[/code\]LogCat\[code\]12-19 06:03:36.960: E/AndroidRuntime(20130): FATAL EXCEPTION: main12-19 06:03:36.960: E/AndroidRuntime(20130): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.Highscores}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.ActivityThread.access$600(ActivityThread.java:130)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.os.Handler.dispatchMessage(Handler.java:99)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.os.Looper.loop(Looper.java:137)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.ActivityThread.main(ActivityThread.java:4745)12-19 06:03:36.960: E/AndroidRuntime(20130): at java.lang.reflect.Method.invokeNative(Native Method)12-19 06:03:36.960: E/AndroidRuntime(20130): at java.lang.reflect.Method.invoke(Method.java:511)12-19 06:03:36.960: E/AndroidRuntime(20130): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)12-19 06:03:36.960: E/AndroidRuntime(20130): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)12-19 06:03:36.960: E/AndroidRuntime(20130): at dalvik.system.NativeStart.main(Native Method)12-19 06:03:36.960: E/AndroidRuntime(20130): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.12-19 06:03:36.960: E/AndroidRuntime(20130): at android.view.ViewGroup.addViewInner(ViewGroup.java:3378)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.view.ViewGroup.addView(ViewGroup.java:3249)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.view.ViewGroup.addView(ViewGroup.java:3194)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.view.ViewGroup.addView(ViewGroup.java:3170)12-19 06:03:36.960: E/AndroidRuntime(20130): at com.example.test.Highscores.onCreate(Highscores.java:39)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.Activity.performCreate(Activity.java:5008)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)12-19 06:03:36.960: E/AndroidRuntime(20130): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)12-19 06:03:36.960: E/AndroidRuntime(20130): ... 11 more\[/code\]What I want is a simple 3 column table with row 1 headings being "RANK", "PERCENTAGE" AND "SCORE". Later I will have 10 more rows that I will pull from a SQLite database but I will tackle that afterwards.
 
Back
Top