フラグメントで構築されたアプリケーションをデバッグしようとしています。私は断片についてはほとんど知らないので、私はいくつかの問題があります。DrawerLayoutをフラグメントで処理する
MainActivityや他のフラグメントからフラグメントを開くと、アクションボタンが戻るボタンに変換されます。 私はちょっと仕事をしましたが、断片から戻ってもう一度押すと、戻るボタンがホームボタンに戻ります。
Androidの戻るボタンのように、そのホームボタンを背面の矢印に変換するときに、そのホームボタンをどのように動作させることができるかを知りたいと思います。現在は何もしません。
MainActivity
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_trash_all: DataHolder.cart = null; isTrashButtonPresent = false; supportInvalidateOptionsMenu(); inflateFragment(CartFragment.newInstance(null, null)); resolveCircularText(DataHolder.getOverallCartQuantity()); return true; case R.id.btnMyMenu: if (drawer.getDrawerLockMode(GravityCompat.START) ==DrawerLayout.LOCK_MODE_LOCKED_CLOSED) { onBackPressed(); } else { drawerToggle(); } return true; default: return super.onOptionsItemSelected(item); } } private void drawerToggle() { if (drawer.isDrawerVisible(GravityCompat.START)) { drawer.closeDrawer(GravityCompat.START); } else { drawer.openDrawer(GravityCompat.START); } } private void setupNavigationDrawer() { mDrawerToggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open,R.string.navigation_drawer_close); mDrawerToggle.setHomeAsUpIndicator(R.drawable.drawer_icon); drawer.addDrawerListener(mDrawerToggle); navigationView.setNavigationItemSelectedListener(this); if (getSupportActionBar() != null) { getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); } setDrawerState(true); } public void setDrawerState(boolean isEnabled) { if (isEnabled) { drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START); mDrawerToggle.syncState(); } else { drawer.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START); //Drawable backButton = ContextCompat.getDrawable(this, R.mipmap.ic_back_button); getSupportActionBar().setHomeAsUpIndicator(null); } }
かけら:
のOnCreate:
をここでif (getActivity() != null) { ((MainActivity) getActivity()).setDrawerState(false); } @Override public void onDestroy() { super.onDestroy(); if (getActivity() != null) { ((MainActivity) getActivity()).setDrawerState(true); } }
が、私はそれが関連することだと思ういくつかのコードであるあなたが必要な場合は、私はより多くを提供します
ありがとうございましたdvance!
私はあなたが欲しいものを理解していません。あなたは、ユーザーが何をしているのか、それぞれのステップでアプリケーションがどのように対応すべきかを段階的に記述できますか?スクリーンショットやモックアップが大いに役立ちます。 –
これはeコマースアプリです。 MainActivityには、いくつかのフラグメント(My account、wishlistなど)につながるボタンがあるDrawerLayoutが含まれています。ユーザーがフラグメントを開くと、DrawerLayoutは非アクティブになり、DrawerLayoutアクションボタンの代わりに戻るボタンが表示されます。これは、戻るボタンが何もしない場合や、例えばユーザが電話のデフォルトの戻るボタンから戻ると、そのボタンが別のフラグメントに裏打ちされている場合には、戻るボタンが消えてしまいます。いくつかのスクリーンショットで質問を更新します。 –
質問を編集する必要があります –