Establecer el título inToolBar de Fragment en Android

He estado utilizando la última barra de herramientas de AppCompatv7 lib.I han colocado un textview en el ToolBar ViewGroup Y quiero establecer un título en este Textview del fragmento en mi activity.In caso de una barra de acción personalizada ((ActionBarActivity) getActivity) .setcustomView (..) habría hecho el trabajo. Pero debido al uso de esta barra de herramientas no soy capaz de usar that.Also he implementado un método en mi BaseActivity que es heredado por todas las actividades.Esta BaseActivity contiene mi método para inicializar Un cajón deslizante a la izquierda. Tengo que inicializar el método initDrawerLayout () en la actividad de otra manera el cajón no sería inicializado. Y si lo inicializo en fragmento su darme todos los resultados vacíos, ni el botón de conmutación para el cajón y tampoco es el Título de encargo que consigue fijado.

Este es mi código initDrawer ..

public void initDrawerLayout(String toolbar_text) { mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); mDrawerRelative = (RelativeLayout) findViewById(R.id.drawer_relative); if (mDrawerLayout != null) { findViewById(R.id.drawer_btn_a).setOnClickListener(this); findViewById(R.id.drawer_btn_b).setOnClickListener(this); findViewById(R.id.drawer_btn_c).setOnClickListener(this); findViewById(R.id.drawer_btn_d).setOnClickListener(this); findViewById(R.id.drawer_btn_e).setOnClickListener(this); findViewById(R.id.drawer_btn_f).setOnClickListener(this); findViewById(R.id.drawer_btn_g).setOnClickListener(this); findViewById(R.id.drawer_btn_h).setOnClickListener(this); findViewById(R.id.drawer_btn_i).setOnClickListener(this); findViewById(R.id.drawer_btn_j).setOnClickListener(this); findViewById(R.id.drawer_btn_k).setOnClickListener(this); findViewById(R.id.drawer_btn_l).setOnClickListener(this); findViewById(R.id.my_layout).setOnClickListener(this); Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar); toolbar.setBackground(getResources().getDrawable(R.drawable.icn_actionbar_background)); TextView mTitle = (TextView) toolbar.findViewById(R.id.toolbar_title); mTitle.setText(toolbar_text); mTitle.setTypeface(Typeface.DEFAULT_BOLD); if (toolbar != null) { setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); } toolbar.setNavigationIcon(R.drawable.ic_drawer); mDrawerToggle = new ActionBarDrawerToggle( this, mDrawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close ); mDrawerLayout.setDrawerListener(mDrawerToggle); toolbar.setNavigationOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (mDrawerLayout.isDrawerOpen(Gravity.LEFT)) { mDrawerLayout.closeDrawer(Gravity.LEFT); } else { mDrawerLayout.openDrawer(Gravity.LEFT); } } }); mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); mDrawerLayout.setScrimColor(getResources().getColor( android.R.color.transparent)); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayShowTitleEnabled(false); } } 

Y este mi código en el fragmento ..

((FirstActivity) getActivity()).initDrawerLayout(mFirst.name); Donde mFirst es un objeto de clase Person

Y el código de la barra de herramientas.

 <android.support.v7.widget.Toolbar android:id="@+id/my_awesome_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="?attr/actionBarSize"> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" android:text="Toolbar Title" android:textColor="@color/action_text-color" android:textSize="18sp" android:textStyle="bold" /> </android.support.v7.widget.Toolbar> 

Por favor ayuda chicos ..

Para permitir que un fragmento comunique hasta su actividad (para establecer el título de su barra de herramientas), puede definir una interfaz en la clase Fragmento e implementarla dentro de la Actividad como se describe aquí: Comunicación con otros fragmentos .

Hago esto como esto: desde la llamada fragmento

 getActivity().setTitle("your title"); 

También puedes llamar a cualquier función de tu padre Actividad como esta:

 YourActivity mYourActiviy = (YourActivity) getActivity(); mYourActivity.yourActivityFunction(yourParameters); 

Puedes cambiar el título de tu barra de herramientas en el evento OnAttach, algo así

  var toolbar = activity.FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); toolbar.Title = "New Title"; 

La respuesta está escrita a continuación en el método de oncreateview de fragmentos.

getActivity().setTitle("your name");

 getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { @Override public void onBackStackChanged() { FragmentManager.BackStackEntry lastBackStackEntry=null; int lastBackStackEntryCount = getSupportFragmentManager().getBackStackEntryCount() - 1; if(lastBackStackEntryCount >= 0 ) { lastBackStackEntry = getSupportFragmentManager().getBackStackEntryAt(lastBackStackEntryCount); } Toast.makeText(MainActivity.this, ""+lastBackStackEntryCount, Toast.LENGTH_SHORT).show(); if(lastBackStackEntryCount == -1) { toolbar.setTitle(""); toolbar.setLogo(R.drawable.header_logo); } else { toolbar.setTitle(lastBackStackEntry.getName()); } } }); 

En su Actividad, declare la barra de herramientas como pública.

 public class YourActivity : Activity { public Toolbar toolbar; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = .... // initilize your toolbar } } 

Entonces, de su fragmento

 ((YourActivity) getActivity()).toolbar.Title = "Your Title"; 

Es necesario establecer el título en la actividad de comisión del fragmento y devolver el fragmento

 getSupportFragmentManager().beginTransaction().replace(R.id.main_fragment, mainFragment).commit(); toolbar.setTitle("ShivShambhu"); return contentFragment; 

Esto funciona para mí.

Si alguien lucha con este problema, esto puede ser útil.

Básicamente tienes 4 opciones, cómo manejar eso:

  • Utilice una interfaz para comunicarse con su actividad, o cualquier otro método conveniente, como un bus de eventos.
  • Usted llama a getActivity().setTitle("Title") , pero en este caso debe adjuntar su Toolbar de Toolbar a la ActionBar llamando a setSupportActionBar() en su actividad.
  • Puede tener una instancia pública de su Toolbar de Toolbar y acceder a esa instancia del fragmento.
  • Por último, si necesita la instancia de su Toolbar de Toolbar (es posible que desee hacer algo más con), puede simplemente obtener de esta manera:

    Toolbar bar=Toolbar.class.cast(getActivity().findViewById(R.id.toolbar));

Bueno, la última opción resolvería el problema sólo si la Toolbar no se ha pasado al método setSupportActionBar .

Si lo ha sido, entonces debe llamar a este método en su actividad:

supportActionBar.setDisplayShowTitleEnabled(false) ,

Que resolverá el problema.

Sin embargo, yo sugeriría utilizar ButterKnife que lo hará un poco más limpio, aquí un ejemplo:

  Toolbar actionBar=findById(getActivity(),R.id.actionBar); actionBar.setTitle("Title"); 

Si está utilizando una barra de herramientas personalizada, esto le ayudará a:

 Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); toolbar.setTitle("Feedback"); 
  • ¿Cómo hacer que el menú emergente de desbordamiento evite obstruir la barra de acción?
  • Match_parent no funciona para la barra de herramientas con el diseño dentro
  • Adición de vista personalizada a una barra de herramientas
  • ¿Es posible tener ScrollingViewBehavior combinado con el comportamiento de Snackbar?
  • Icono personalizado en la barra de herramientas de Android
  • Implementación de Google play y mapas como la barra de búsqueda de Android
  • Creación de una pantalla de preferencias con soporte (v21) Barra de herramientas
  • Cómo agregar una imagen en la barra de herramientas
  • ¿Por qué el título no está centrado en la barra de herramientas?
  • No se puede obtener android.support.v7.widget.SearchView para aceptar el texto
  • La elevación no se muestra en la barra de herramientas de los dispositivos pre-pirulí
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.