Last active
September 1, 2020 15:22
-
-
Save kevinvanmierlo/c1a0d6b8bed65b1eeaa6 to your computer and use it in GitHub Desktop.
Same Navigation Drawer on different Activities
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class BaseActivity extends AppCompatActivity | |
{ | |
public DrawerLayout drawerLayout; | |
public ListView drawerList; | |
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.app_name); | |
} | |
public void onDrawerOpened(View drawerView) | |
{ | |
getActionBar().setTitle(R.string.menu); | |
} | |
}; | |
drawerLayout.setDrawerListener(drawerToggle); | |
getActionBar().setDisplayHomeAsUpEnabled(true); | |
getActionBar().setHomeButtonEnabled(true); | |
drawerList = (ListView) findViewById(R.id.left_drawer); | |
drawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_activated_1, | |
items)); //Items is an ArrayList or array with the items you want to put in the Navigation Drawer. | |
drawerList.setOnItemClickListener(new OnItemClickListener() { | |
@Override | |
public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) { | |
// Do what you want when an item from the Navigation Drawer is clicked | |
} | |
}); | |
} | |
@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); | |
} | |
} |
I get an exception at this point: drawerLayout.setDrawerListener(drawerToggle);
Look at line 9: R.id.drawer_layout should be in every activity with exactly the same id. Your drawerLayout equals null at this point.
Thanks , I Needed This
drawerLayout.setDrawerListener(drawerToggle);
java.lang.NullPointerException
How to color the background of the selected item
I've followed everything what you given but every activity I am getting bellow error don't know why
"android.view.InflateException: Binary XML file line #28: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference"
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, I want to include a navigation menu in all of the activities. I used the code "BaseActivity.java" and extended all other activities to BaseActivity. i have an issue, when I try to call one of my activities i get the following runtime exception
Unable to start activity ComponentInfo{lecho.lib.hellocharts.samples.app.wicedsense/lecho.lib.hellocharts.samples.blog_activity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.ActionBarDrawerToggle.syncState()' on a null object reference
The following is the code which I modified:
` public class BaseActivity extends AppCompatActivity
{
public DrawerLayout drawerLayout;
public ListView drawerList;
private ActionBarDrawerToggle drawerToggle;
public String[] layers;
private CharSequence mTitle;
private CharSequence mDrawerTitle;
protected void onCreateDrawer(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mTitle =mDrawerTitle=getTitle();
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
}`
I get an exception at this point:
drawerLayout.setDrawerListener(drawerToggle);
And i also found out that setting a title was producing an Nullpointer exception
getSupportActionBar().setTitle(mTitle);
andgetSupportActionBar().setTitle(mDrawerTitle);
My question is do I need to hard code the title or is there any other smart way of doing it.