extending navigation drawer activity to other activities
android, drawer, java, menu, navigation
Solution
In the main activity you have to call super.onCreate(savedInstanceState) after setContentView()
Problem
I'm trying to create a navigation drawer activity so I can extend that activity and use the menu in all activities by following the answer given in this question Link but my test app keeps crashing, here's my code: BaseActivity.java ``` public class BaseActivity extends Activity { public DrawerLayout drawerLayout; public ListView drawerList; public String[] layers; private ActionBarDrawerToggle drawerToggle; protected void onCreate(Bundle savedInstanceState) { // R.id.drawer_layout should be in every activity with exactly the same // id. drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, R.drawable.ic_drawer, 0, 0) { public void onDrawerClosed(View view) { getActionBar().setTitle(R.string.hello_world); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(R.string.hello_world); } }; drawerLayout.setDrawerListener(drawerToggle); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); layers = getResources().getStringArray(R.array.planets_array); drawerList = (ListView) findViewById(R.id.left_drawer); drawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, android.R.id.text1, layers)); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (drawerToggle.onOptionsItemSelected(item)) { return true; } return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); } } ``` MainActivity.java ``` public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_profile); } } ``` activity_profile.xml ``` <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".ProfileActivity" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /> </RelativeLayout> ``` Logcat ``` 03-03 01:22:18.031: D/AndroidRuntime(27902): Shutting down VM 03-03 01:22:18.031: W/dalvikvm(27902): threadid=1: thread exiting with uncaught exception (group=0x2b542210) 03-03 01:22:18.041: E/AndroidRuntime(27902): FATAL EXCEPTION: main 03-03 01:22:18.041: E/AndroidRuntime(27902): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.slider/com.example.slider.MainActivity}: java.lang.NullPointerException 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.ActivityThread.access$600(ActivityThread.java:127) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.os.Handler.dispatchMessage(Handler.java:99) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.os.Looper.loop(Looper.java:137) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.ActivityThread.main(ActivityThread.java:4441) 03-03 01:22:18.041: E/AndroidRuntime(27902): at java.lang.reflect.Method.invokeNative(Native Method) 03-03 01:22:18.041: E/AndroidRuntime(27902): at java.lang.reflect.Method.invoke(Method.java:511) 03-03 01:22:18.041: E/AndroidRuntime(27902): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 03-03 01:22:18.041: E/AndroidRuntime(27902): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 03-03 01:22:18.041: E/AndroidRuntime(27902): at dalvik.system.NativeStart.main(Native Method) 03-03 01:22:18.041: E/AndroidRuntime(27902): Caused by: java.lang.NullPointerException 03-03 01:22:18.041: E/AndroidRuntime(27902): at com.example.slider.BaseActivity.onCreate(BaseActivity.java:35) 03-03 01:22:18.041: E/AndroidRuntime(27902): at com.example.slider.MainActivity.onCreate(MainActivity.java:12) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.Activity.performCreate(Activity.java:4465) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 03-03 01:22:18.041: E/AndroidRuntime(27902): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 03-03 01:22:18.041: E/AndroidRuntime(27902): ... 11 more ```