2016-07-30 12 views
1

ActionBarのタイトルを更新する際に問題があります。 ` Android SupportActionBarはタイトルを更新しません

<android.support.design.widget.AppBarLayout 
     android:id="@+id/app_bar" 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/app_bar_height" 
     android:fitsSystemWindows="true" 
     android:theme="@style/AppTheme.AppBarOverlay"> 

     <android.support.design.widget.CollapsingToolbarLayout 
      android:id="@+id/toolbar_layout" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:fitsSystemWindows="true" 
      app:contentScrim="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|exitUntilCollapsed"> 

      <android.support.v7.widget.Toolbar 
       android:id="@+id/toolbar" 
       android:layout_width="match_parent" 
       android:layout_height="?attr/actionBarSize" 
       app:layout_collapseMode="pin" 
       app:popupTheme="@style/AppTheme.PopupOverlay"/> 

     </android.support.design.widget.CollapsingToolbarLayout> 
    </android.support.design.widget.AppBarLayout> 

    <include layout="@layout/content_count_scrolling"/> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fabReset" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_margin="@dimen/fab_margin" 
     android:src="@android:drawable/ic_dialog_alert" 
     app:layout_anchor="@id/app_bar" 
     app:layout_anchorGravity="bottom|end"/> 

</android.support.design.widget.CoordinatorLayout> 

レイアウトcontent_count_scrollingだけNestedScrollView内部RecyclerViewとが含まれています。アプリケーションは、現在、それが唯一の活性を有する、かなり単純です。

私のケースでは、RecyclerViewの行のEditTextに数字を入力すると、データモデルに値が設定され、合計値(すべての行の合計)が再計算されます。この合計値はActionBar.titleに設定する必要があります。これを行うために、私はRxBusも使用しています。以下のようにMainActivity:方法refreshActionBarTitle()

public class MainActivity extends AppCompatActivity { 
    // .... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_scrolling); 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     toolbar.setTitle(""); 

     mRxBus = getRxBusSingleton();   
     // .... 
    } 
} 

public void refreshActionBarTitle() { 
    String total = Data.getTotal(); 
    Timber.d("Refresh bar title with value="+total); 

    toolbar.setTitle(""); 
    setSupportActionBar(toolbar); 
    toolbar.setTitle("Title "+total); 

    // testes also with: 
    // getSupportActionBar().setTitle("Title "+total); 

    Timber.d("Title after refresh: " + getSupportActionBar().getTitle()); 
} 

`

はRxBusによってトリガされます。メソッドがトリガーされると、ActionBarのタイトルも設定されます(ログとデバッガーでチェックされます)。問題は、ActionBarが無効化されて再描画されないということです。これはスクリーンを回転させた後にのみ行われます。これは明らかです。

ツールバーを無効にしてください。私はまた、このイベントは、フォーカスを変更した後だけでなく、EditTextのエイヴリーチェンジの後にトリガーされることに気づく必要があるので、私は無効にすることはできません。画面全体。

私はToolbar (SupportActionBar) title changes to app name on orientation changeからのアドバイスもチェックしましたが、助けにはなりませんでした。

+0

getSupportActionBar()を追加してみてください。setDisplayShowTitleEnabled(true); – darwin

+0

私もやったと思います。あるいは、 'false'でチェックし、' true'で無効にしてください。うまくいきませんでした。私は 'Toolbar'を無効にしてドロワーを設定しました。そしてまた何も。 – Dzinek

答えて

10

固定。 CollapsingToolbarLayout.setTitle()メソッドを使用する必要があります。これは動作します

関連する問題