Le bouton à bascule de ne pas travailler pour la navigation tiroir
Je me suis mise en œuvre d'un Tiroir de Navigation pour mon application android. J'ai eu le tiroir de travail en les faisant glisser sur le côté, mais la maison/à bascule bouton sur la barre d'action ne change pas à l'icône que je veux et de ne pas répondre aux clics, tu le onDrawerClosed et onDrawerOpened méthodes définies dans il les appelle.
Mon code est comme suit:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/loadingFragment"
android:name="com.whostr.clients.android.LoadingFragment" />
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/eventFragment"
android:name="com.whostr.clients.android.EventDisplayFragment"/>
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/emptyFragment"
android:name="com.whostr.clients.android.EmptyView"/>
<!-- Listview to display slider menu -->
<ListView android:id="@+id/left_drawer"
android:layout_width = "240dp"
android:layout_height = "match_parent"
android:layout_gravity = "start"
android:choiceMode = "singleChoice"
android:dividerHeight = "1dp"
android:divider = "@android:color/transparent"
android:background="#111"
/>
Et dans l'activité que j'ai le code suivant:
@Override
public void onCreate(Bundle savedDataInstace)
{
super.onCreate(savedDataInstace);
setContentView(R.layout.eventdisplay);
fm = getSupportFragmentManager();
//get fragments by id
fragments[EVENT_VIEW]= fm.findFragmentById(R.id.eventFragment);
fragments[LOADING] = fm.findFragmentById(R.id.loadingFragment);
fragments[EMPTY_VIEW] = fm.findFragmentById(R.id.emptyFragment);
menuList = getResources().getStringArray(R.array.menuArray);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawwer_open, R.string.drawer_closed)
{
/*
* Called when a drawer has settled in a completely closed state
*/
public void onDrawerClosed(View view)
{
Log.d("drawerToggle", "Drawer closed");
super.onDrawerClosed(view);
getActionBar().setTitle(R.string.app_name);
invalidateOptionsMenu(); //Creates call to onPrepareOptionsMenu()
}
/*
* Called when a drawer has settled in a completely open state
*/
public void onDrawerOpened(View drawerView)
{
Log.d("drawerToggle", "Drawer opened");
super.onDrawerOpened(drawerView);
getActionBar().setTitle("NavigationDrawer");
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
//Set the adapter for the list view
mDrawerList.setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, menuList));
mDrawerList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position,
long id) {
Log.d("navigationDrawer", "Clicked on an item");
}
});
FragmentTransaction transaction = fm.beginTransaction();
//Hide the event view
transaction.hide(fragments[EVENT_VIEW]);
transaction.hide(fragments[EMPTY_VIEW]);
transaction.commit();
AsyncTask<String, Void, EventResponseCollection> task = new GetEventsNearByAsyncTask().execute();
try {
if(task != null)
events = task.get().getItems();
} catch (InterruptedException | ExecutionException e) {
Log.d("viewEvent", "Error when retrieving task details " + e.getMessage());
}
if(events == null)
{
//show create your own event fragment
changeFragment(EMPTY_VIEW);
}
else
{
Log.d("viewEvent", "I have " + events.size());
//show proper fragment with the first event displayed
currentEvent = events.get(eventIndex);
((EventDisplayFragment) fragments[EVENT_VIEW]).updateFragment(currentEvent);
changeFragment(EVENT_VIEW);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
Log.d("onOptionsItemSelected", "In the on item select");
//Pass the event to ActionBarDrawerToggle, if it returns
//true, then it has handled the app icon touch event
if(mDrawerToggle.onOptionsItemSelected(item))
{
Log.d("onOptionsItemSelected", "Clicked on action bar item");
return true;
}
//Handle your other action bar items...
return super.onOptionsItemSelected(item);
}
Quelqu'un a une idée sur ce que je peux faire? J'ai essayé toutes les solutions que j'ai trouvé en ligne pour faire ce travail, mais apparemment, je suis hors de la chance et rien ne semble fonctionner 🙁
OriginalL'auteur redspider | 2014-04-24
Vous devez vous connecter pour publier un commentaire.
Vous devez ajouter quelque chose comme ceci dans votre Activité
merci beaucoup....il a résolu mon pbm...
OriginalL'auteur Dmitry
Cela a fonctionné pour moi, c'est presque comme le post précédent
return super.onOptionsItemSelected(item);
OriginalL'auteur ZeWolfe15
Ok, c'était une petite omission de mon côté, j'ai oublié d'inclure les 2 lignes de code:
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
dans la méthode onCreate.
OriginalL'auteur redspider
J'ai été confronté au même problème.
J'espère que cette réponse peut aider quelqu'un face à un problème similaire.
Vérifier openDrawer attribut dans votre tiroir de mise en page
Aussi, vérifiez pour serrure de tiroir mode dans votre Activité et de l'enlever, si vous avez accidentellement tiroir verrouillé.
OriginalL'auteur user3804372
Années plus tard, mais quand même..... il pourrait aider quelqu'un, quand vous avez une mise en page avec un Drawerlayout, le Tiroir suppose que le Premier enfant est le point de vue de chevauchement lors de la montré et le Deuxième enfant est le panneau de navigation. Donc dans votre cas vous pourriez faire quelque chose comme...
Donc, dans ce sens, le Tiroir sait que le RelativeLayout est le point de vue des chevauchements et la liste est le panneau de gauche, vous voulez.
Aussi que vous avez à faire dans le code java toutes les choses que vous savez.. la configuration de la barre d'outils, mise en place du tiroir indiquant la barre d'outils, le réglage de la bascule, etc... tout est dans les commentaires.
OriginalL'auteur Yudel Martínez