[UPDATE]Poignée bouton Accueil événement clic en utilisant DrawerLayout
J'ai changé le activity_main.xml
et le MainActivity.class
comme suit: Creating a Navigation Drawer, du Guide des développeurs Android et maintenant il fonctionne parfaitement.
J'utilise un DrawerLayout
pour mon MainActivity
, qui contient un FrameLayout
juste pour définir différents Fragments
mais je ne suis pas capable de gérer ses clics. Cela fonctionne, le menu est ouvert et fermé mais je ne sais pas comment ni où les gérer. Ceci est mon code:
toolbar.xml
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"/>
activity_main.xml
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:openDrawer="start">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/ll_main_layout"
android:orientation="vertical">
<include layout="@layout/toolbar"
android:id="@+id/toolbar"/>
<FrameLayout
android:id="@+id/main_frameLayout"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/lateral_menu_header" />
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lateral_menu_listView"
android:layout_marginTop="16dp"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"/>
</LinearLayout>
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
MainActivity.class
public class MainActivity extends AppCompatActivity
implements ListView.OnItemClickListener {
private static final String LOG_TAG = MainActivity.class.getSimpleName();
private static final String CURRENT_FRAGMENT = "mCurrentFragment";
private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;
private ListView mDrawerList;
private ArrayList<LateralMenuItem> lateralMenuItems;
private Toolbar mToolbar;
public ActionBar mActionBar;
private FragmentManager mFragmentManager;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initToolbar();
initLateralMenu();
mFragmentManager = getSupportFragmentManager();
}
private void initLateralMenu() {
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
if (mDrawerLayout != null) {
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar, 0, 0);
mDrawerToggle.syncState();
mDrawerLayout.addDrawerListener(mDrawerToggle);
mDrawerList = (ListView) findViewById(R.id.lateral_menu_listView);
if (mDrawerList != null) {
lateralMenuItems = initLateralMenuList();
LateralMenuListAdapter lateralMenuListAdapter = new LateralMenuListAdapter(MainActivity.this, lateralMenuItems);
mDrawerList.setAdapter(lateralMenuListAdapter);
mDrawerList.setOnItemClickListener(this);
}
}
}
private void initToolbar() {
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mActionBar = getSupportActionBar();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(mDrawerToggle.onOptionsItemSelected(item)) {
// THIS DOESN'T WORK, I'VE DEBUGGED AND IS UNREACHABLE
}
return super.onOptionsItemSelected(item);
}
}
La chose est que onOptionesItemSelected(MenuItem item)
ne fonctionne pas. J'ai également essayé de définir un mDrawerToggle.setToolbarNavigationClickListener(...)
, mToolbar.setOnMenuItemClickListener(...)
et mToolbar.setNavigationOnClickListener()
et aucun d'eux n'a fonctionné.
Mon objectif est de gérer quand je suis dans l'un ou l'autre Fragment
pour régler le bouton d'accueil et peut remplacer onBackPressed()
.
Peut-être que la logique est différente lorsque vous utilisez le DrawerLayout
, ai-je raté quelque chose?
Cela ne fonctionne pas non plus. J'ai débogué au point de commutation et il ne s'arrête même pas là. –