0

私は自分のMainActivityを、ハンバーガーとバック矢印付きのユーザーのためのプロパティナビゲーションにしたいと考えています。Androidハンバーガーメニューと戻る矢印

私は1つのフラグメントセットハンバーガーを持っていますが、私のMainActivityにフラグメントが追加されている場合は、戻る矢印を設定します。

どのように実装すればよいですか?ここで

は私の実装です...

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

private Toolbar toolbar; 
private DrawerLayout drawer; 
private NavigationView navigationView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    setSupportActionBar(toolbar); 

    final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.addDrawerListener(toggle); 
    toggle.syncState(); 

    navigationView.setNavigationItemSelectedListener(this); 

    //TODO: Insert back arrow button if have more than one fragment on backstack 
    /*getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { 
     @Override 
     public void onBackStackChanged() { 
      int stackHeight = getSupportFragmentManager().getBackStackEntryCount(); 
      if (stackHeight > 0) { 
       if (getSupportActionBar() != null) { 
        getSupportActionBar().setHomeButtonEnabled(true); 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
        toggle.setDrawerIndicatorEnabled(false); 
       } 
      } else { 
       if (getSupportActionBar() != null) { 
        getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
        toggle.setDrawerIndicatorEnabled(true); 
       } 
      } 
     } 
    });*/ 

    ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), new ListVeiculoFragment(), R.id.container_main); 
} 
} 

答えて

0
setSupportActionBar(toolbar); 
    toolbar.setTitle(R.string.app_name); 
    toolbar.setTitleTextColor(getResources().getColor(R.color.colorWhite)); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

このコードをあなたの活動に使用します。ここでは、humbargerスタイルのナビゲーションを使用しています。あなたがDrawerToggle「ハンバーガー」の断片の数が変化する瞬間をキャッチし、(偽)/ショー(true)を非表示にするこのコードを使用する必要があり

0

mDrawerToggle.setDrawerIndicatorEnabled(false); 

EDIT:

であなたの活動(どこかに)あなたは(あなたが現在のフラグメントを変更)このようなものを持っている:

private void selectItem(int position) { 

Fragment fragment = new MyFragment(); 

FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment) 
       .commit(); 
} 

が、私はこれで最後の行を変更します

fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, fragment) 
       .addToBackStack(null) 
       .commit(); 

、その後チェック:Interfaceクラスを作成することによって

if(fragmentManager.getBackStackEntryCount() > 1) mDrawerToggle.setDrawerIndicatorEnabled(false); 
+0

これは、あなたの活動にナビゲーションドロワーを使用する場合、おそらくより多くの情報... – Mohsen

+1

を追加することによって、それが有用であることができ、正しい答えすることができます。 – lesniak

+0

私のソースコードに基づいてもっとうまく説明できますか...私はいくつかのコードを挿入しました... –

3

は仕事:

public interface HideShowIconInterface{ 
    void showHamburgerIcon(); 
    void showBackIcon(); 
} 

あなたActivityInterfaceを実装します。

あなた Fragment
public class YourActivity extends AppCompatActivity implements HideShowIconInterface{ 
    @Override 
    public void showHamburgerIcon() { 
     getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
     mActionBarDrawerToggle.setDrawerIndicatorEnabled(true); 
    } 
    @Override 
    public void showBackIcon() { 
     mActionBarDrawerToggle.setDrawerIndicatorEnabled(false); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
} 

、whateveを呼び出しますRあなたが望むによって:

((HideShowIconInterface) getActivity()).showHamburgerIcon(); 

または

((HideShowIconInterface) getActivity()).showBackIcon(); 
関連する問題