Make sure, that you call in your activity super.onOpionsItemSelected!
SlidingMenu: "getActionBar().setHomeButtonEnabled(true);" not taken
-
24-06-2023 - |
Question
HomeButton is not Enabled to toggle the menu!
it works in my testing-app, but not in the app I want.
Here the NavigationDrawerActivity:
public class NavigationDrawerActivity extends Activity{
protected String[] drawerList;
protected ListView drawerView;
protected DrawerLayout drawerLayout;
protected Context context;
private ActionBarDrawerToggle mDrawerToggle;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context=this;
drawerView=(ListView) findViewById(R.id.left_drawer);
drawerLayout=(DrawerLayout) findViewById(R.id.drawer_layout);
//Android doesn't accept the ListView.setAdapter here..!?
drawerList = getResources().getStringArray(R.array.nav_drawer_items);
((ListView) findViewById(R.id.left_drawer)).setAdapter(new ArrayAdapter<String>(this, R.layout.menu_list_item, drawerList));
drawerView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent menu;
switch (position) {
case 0:
drawerLayout.closeDrawer(drawerView);
if(context.getClass().equals(ActivityMain.class)) {
Log.i("menu", "same Actvity");
break;
}
menu = new Intent(context, ActivityMain.class);
menu.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(menu);
overridePendingTransition(R.anim.in, R.anim.out);
break;
default:
drawerLayout.closeDrawer(drawerView);
//new RalaAlertToast(context, "default");
break;
}
}
});
mDrawerToggle = new ActionBarDrawerToggle((Activity) context, drawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close) {
/** Called when a drawer has settled in a completely closed state. */
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
getActionBar().setTitle(R.string.app_name);
}
/** Called when a drawer has settled in a completely open state. */
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle(R.string.app_name);
}
};
drawerLayout.setDrawerListener(mDrawerToggle);
getActionBar().setDisplayHomeAsUpEnabled(true);
actionAPI14();
}
@TargetApi(14)
private void actionAPI14() {
if(Build.VERSION.SDK_INT>=14) {//disabled Target Check
getActionBar().setHomeButtonEnabled(true);
}
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Pass the event to ActionBarDrawerToggle, if it returns
// true, then it has handled the app icon touch event
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle your other action bar items...
return super.onOptionsItemSelected(item);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
if(! drawerLayout.isDrawerOpen(drawerView)) {
finish();
System.exit(0);
return true;
}else{
drawerLayout.closeDrawer(drawerView);
}
}
return false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
if(drawerLayout.isDrawerOpen(drawerView)) {
drawerLayout.closeDrawer(drawerView);
return true;
}
}
return false;
}
}
I've read many forums and other sites about target...
but nothing helped.
What could be possible reasons?
I've also posted it for others, they are long searching for a simple way to make their own menu. Just extends this Claes. (I searched long, and in my testing app it works without any problems!)
Solution
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow