Android programmatically adding RelativeLayout to to TableLayout-Collection of common programming errors

So, I decided to learn to write Android apps. I prefer learning by writing code so I setup my environment and dived in to Android!

And hit my head 🙂

I am trying to add import RelativeLayout as TableRows to a Table view.

This is my table layout which I want to re-use,

    



I included it i my my main activity with


    



Then, I created my Row with RelativeLayout


 










 

Now, I am trying this

 public class HomeActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.home_activity);


    TableLayout tbl = (TableLayout)findViewById(R.id.homeActivityUploadList);
    RelativeLayout row = (RelativeLayout)findViewById(R.layout.upload_list_table_row_relative);

    tbl.addView(row);


}

But, i get NullPointerException. It can’t find

RelativeLayout row = (RelativeLayout)findViewById(R.layout.upload_list_table_row_relative);

I’ve also tried

RelativeLayout row = (RelativeLayout)findViewById(R.id.upload_list_table_row_relative);

What am I doing wrong?

Thanks

Log output

    01-24 11:30:15.757: D/dalvikvm(1625): GC_EXTERNAL_ALLOC freed 46K, 53% free    2539K/5379K, external 1625K/2137K, paused 68ms

01-24 11:30:15.877: D/dalvikvm(1625): GC_EXTERNAL_ALLOC freed 1K, 53% free 2538K/5379K, external 2250K/2810K, paused 58ms 01-24 11:30:15.967: D/AndroidRuntime(1625): Shutting down VM 01-24 11:30:15.967: W/dalvikvm(1625): threadid=1: thread exiting with uncaught exception (group=0x40015560) 01-24 11:30:15.977: E/AndroidRuntime(1625): FATAL EXCEPTION: main 01-24 11:30:15.977: E/AndroidRuntime(1625): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*.HomeActivity}: java.lang.NullPointerException 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.os.Handler.dispatchMessage(Handler.java:99) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.os.Looper.loop(Looper.java:123) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.main(ActivityThread.java:3683) 01-24 11:30:15.977: E/AndroidRuntime(1625): at java.lang.reflect.Method.invokeNative(Native Method) 01-24 11:30:15.977: E/AndroidRuntime(1625): at java.lang.reflect.Method.invoke(Method.java:507) 01-24 11:30:15.977: E/AndroidRuntime(1625): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-24 11:30:15.977: E/AndroidRuntime(1625): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-24 11:30:15.977: E/AndroidRuntime(1625): at dalvik.system.NativeStart.main(Native Method) 01-24 11:30:15.977: E/AndroidRuntime(1625): Caused by: java.lang.NullPointerException 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.view.ViewGroup.addView(ViewGroup.java:1821) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.widget.TableLayout.addView(TableLayout.java:403) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.view.ViewGroup.addView(ViewGroup.java:1808) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.widget.TableLayout.addView(TableLayout.java:394) 01-24 11:30:15.977: E/AndroidRuntime(1625): at com.*.onCreate(HomeActivity.java:23) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 01-24 11:30:15.977: E/AndroidRuntime(1625): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 01-24 11:30:15.977: E/AndroidRuntime(1625): … 11 more

    android:ellipsize=
  1. you must use LayoutInflater

    LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    RelativeLayout  row = (RelativeLayout ) layoutInflater.inflate(R.layout.upload_list_table_row_relative, null);