Android SupportActionBar no actualiza el título
Tengo un problema con el título refrescante de ActionBar. La aplicación es bastante simple, actualmente solo tiene una actividad: `
<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>
El diseñocontent_count_scrolling
contiene soloNestedScrollView
conRecyclerView
dentro.
Mi caso es, cuando ingreso un dígito en elEditText
en cualquiera de las filas de RecyclerView, establece un valor en el modelo de datos y recalcula el valor total (suma de todas las filas). Este valor total debe establecerse comoActionBar.title
. Para hacer esto también estoy usando RxBus. MainActivity como a continuación:
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());
}
`
MétodorefreshActionBarTitle()
es activado por RxBus. Una vez que se activa el método, el título delActionBar
también está configurado (marcado con registros y depurador). El problema es que ActionBar no se invalida y se vuelve a dibujar. Esto se hace solo después de girar la pantalla, lo cual es obvio.
Entonces, por favor, ayúdame con la invalidación correcta de la barra de herramientas. También debo notar que este evento se activará después de un cambio muy grande enEditText
, no solo después de cambiar el enfoque, por lo que no puedo invalidar, por ejemplo. pantalla completa
He comprobado también los consejos deEl título de la barra de herramientas (SupportActionBar) cambia al nombre de la aplicación en el cambio de orientación, pero no me ayudaron.