I created an application with Navigation Drawer in BaseActivity . Everything is working fine, except for changing the name in the Action Bar . the name changes for a second, but when you open a new action, the original name is displayed.
What mistake? thanks
Baseactivity
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); PerfilAdapter.iniciarBaseDatos(this); perfilObj = PerfilAdapter.selectPerfil(1); requestWindowFeature(Window.FEATURE_ACTION_BAR); cargarActionBar(); cargarDrawerLayout(savedInstanceState); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (mDrawerToggle.onOptionsItemSelected(item)) { return true; } switch (item.getItemId()) { case R.id.menuOpcSonidos: ... return true; case R.id.menuOpcCambiarColor: ... return true; default: return super.onOptionsItemSelected(item); } } @Override public boolean onPrepareOptionsMenu(Menu menu) { menu.findItem(R.id.menuOpcSonidos) .setTitle(getResources().getString(R.string.sonidoOnOff) + " " + perfilObj.getSonidos()); return super.onPrepareOptionsMenu(menu); } private void cargarActionBar() { ActionBar actionBar = getActionBar(); int[] colores2 = Modulo.cargarColoresDrawerlayout(perfilObj.getColor()); actionBar.setBackgroundDrawable(new GradientDrawable(Orientation.BOTTOM_TOP, colores2)); getActionBar().setDisplayHomeAsUpEnabled(true); getActionBar().setHomeButtonEnabled(true); int titleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android"); TextView textoTitulo = (TextView)findViewById(titleId); textoTitulo.setTextColor(getResources().getColor(R.color.blanco)); textoTitulo.setTypeface(null, Typeface.BOLD); textoTitulo.setTextSize(19); textoTitulo.setShadowLayer(5, 0, 0, getResources().getColor(R.color.negro)); } private void cargarDrawerLayout(Bundle b) { mTitle = mDrawerTitle = getTitle(); textosMenuLateral = getResources().getStringArray(R.array.nav_drawer_items); iconosMenuLateral1 = getResources() .obtainTypedArray(R.array.iconos_menu_lateral1); iconosMenuLateral2 = getResources() .obtainTypedArray(R.array.iconos_menu_lateral2); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerList = (ListView) findViewById(R.id.list_slidermenuMain); int[] colores = {0, 0xFFFFFFFF, 0}; mDrawerList.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colores)); mDrawerList.setDividerHeight(4); navDrawerItems1 = new ArrayList<DrawerItem>(); navDrawerItems1.add(new DrawerItem(textosMenuLateral[0], iconosMenuLateral1.getResourceId(0, -1))); navDrawerItems1.add(new DrawerItem(textosMenuLateral[1], iconosMenuLateral1.getResourceId(1, -1))); navDrawerItems1.add(new DrawerItem(textosMenuLateral[2], iconosMenuLateral1.getResourceId(2, -1))); navDrawerItems1.add(new DrawerItem(textosMenuLateral[3], iconosMenuLateral1.getResourceId(3, -1))); navDrawerItems1.add(new DrawerItem(textosMenuLateral[4], iconosMenuLateral1.getResourceId(4, -1))); navDrawerItems2 = new ArrayList<DrawerItem>(); navDrawerItems2.add(new DrawerItem(textosMenuLateral[0], iconosMenuLateral2.getResourceId(0, -1))); navDrawerItems2.add(new DrawerItem(textosMenuLateral[1], iconosMenuLateral2.getResourceId(1, -1))); navDrawerItems2.add(new DrawerItem(textosMenuLateral[2], iconosMenuLateral2.getResourceId(2, -1))); navDrawerItems2.add(new DrawerItem(textosMenuLateral[3], iconosMenuLateral2.getResourceId(3, -1))); navDrawerItems2.add(new DrawerItem(textosMenuLateral[4], iconosMenuLateral2.getResourceId(4, -1))); iconosMenuLateral1.recycle(); iconosMenuLateral2.recycle(); mDrawerList.setOnItemClickListener(new SlideMenuClickListener()); adapter = new DrawerListAdapter(getApplicationContext(), navDrawerItems1, navDrawerItems2, perfilObj.getColor(), pos); mDrawerList.setAdapter(adapter); mDrawerToggle = new ActionBarDrawerToggle( this, mDrawerLayout, R.drawable.icono_drawer, R.string.app_name, R.string.app_name ) { public void onDrawerClosed(View view) { getActionBar().setTitle(mTitle); invalidateOptionsMenu(); } public void onDrawerOpened(View drawerView) { getActionBar().setTitle(mDrawerTitle); invalidateOptionsMenu(); } }; mDrawerLayout.setDrawerListener(mDrawerToggle); if (b == null) { opcionesPanelLateral(0); } } private class SlideMenuClickListener implements ListView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { TextView textView = (TextView) view.findViewById(R.id.title); textView.setTypeface(null, Typeface.BOLD); opcionesPanelLateral(position); } } private void opcionesPanelLateral(int position) { Intent i; switch (position) { case 0: pos = 0; break; case 1: i = new Intent(this, ActivitySecond.class); mDrawerLayout.closeDrawer(mDrawerList); startActivity(i); pos = 1; break; case 2: i = new Intent(this, ActivityThird.class); mDrawerLayout.closeDrawer(mDrawerList); startActivity(i); pos = 2; break; case 3: i = new Intent(this, ActivityFourth.class); mDrawerLayout.closeDrawer(mDrawerList); startActivity(i); pos = 3; break; case 4: break; default: break; } mDrawerList.setItemChecked(pos, true); mDrawerList.setSelection(pos); setTitle(textosMenuLateral[pos]); mDrawerLayout.closeDrawer(mDrawerList); } @Override public void setTitle(CharSequence title) { mTitle = title; getActionBar().setTitle(mTitle); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); cargarActionBar(); cargarDrawerLayout(savedInstanceState); mDrawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); mDrawerToggle.onConfigurationChanged(newConfig); } public void onBackPressed() { mDrawerLayout.closeDrawer(mDrawerList); }
I think the mistake is to use actions ... but I don't know how to fix