2017-01-06 6 views
0

このようなツールバーナビゲーションを作成したいと思います。閉じると矢印ボタン付きのAndroidツールバーナビゲーション

私のアクティビティを作成すると、フラグメントを膨らませてツールバーに閉じるボタンを描画します。しかし、ユーザーが別のフラグメントを開いた場合、戻る矢印が表示されます...しかし、このソースでは、クローズボタンしか表示されません。

私のonCreate()メソッドです。

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

    setSupportActionBar(mToolbar); 

    if (getSupportActionBar() != null) { 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white); 
    } 

    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); 
       } 
      } else { 
       if (getSupportActionBar() != null) { 
        getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white); 
       } 
      } 
     } 
    }); 

    if (findViewById(R.id.container_initial) != null) { 
     if (savedInstanceState != null) { 
      return; 
     } 

     ActivityUtils.addFragmentToActivity(getSupportFragmentManager(), new LoginFragment(), R.id.container_initial); 
    } 
} 

私は、このコードを削除するバック矢印ボタンの一部を動作しますが、閉じるボタンを表示していけないなら...

 if (getSupportActionBar() != null) { 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white); 
    } 
+0

他にも矢印ボタンを表示できますか?あなたがそれをActionBarとして扱わずに、通常のビューを画面の上に置いてToolBarを使うことができることを覚えておいてください。 – firegloves

+0

メニューのアイコンを使い、 "if room"を与えると、あなたはどちらかのアイコンを手に入れます –

+0

答えて

0

このようなメニューの試みが、これによって、あなたは場所に近づきますメニュー

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/Updatetimetable" 
    android:orderInCategory="100" 
    android:title="Update" 
    android:icon="@drawable/updatepopup" 
    app:showAsAction="ifRoom"/> 
<item 
    android:id="@+id/viewalert" 
    android:orderInCategory="200" 
    android:title="View alert" 
    android:icon="@drawable/alertcards" 
    app:showAsAction="ifRoom"/> 

0

のツールバーが活動のレイアウトになっている場合。アクティビティ&のアイコンのセッターメソッドを作成して、フラグメント内でそれを変更して変更します。

void setIcon(){ 
.. 
} 

onBackPressed(){ 
if(fragment visible) getsupportfragmentmanger.begintranscation().close 
else super.onbackprsesed 
} 
+0

私のツールバーには、アクティビティにあります...しかし、私はコードを理解していない...あなたはより良い説明できますか? –

+0

アクティティでsetIcon()メソッドを作成し、フラグメントから呼び出すと、アイコンが戻る矢印に変わります。アクティビティのonbackpressed()メソッドをオーバーライドして、フラグメントが表示されているかどうかを確認します。フラグメントが可視であればそれを閉じます。 –

関連する問題