¿Cómo cambiar el título de Actividad en Android?


227

estoy usando

Window w = getWindow();
w.setTitle("My title");

para cambiar el título de mi Actividad actual pero no parece funcionar.

¿Alguien puede guiarme sobre cómo cambiar esto?

Respuestas:


498

Prueba setTitle por sí mismo, así:

setTitle("Hello StackOverflow");

1
setTitle no funciona para mí, getSupportActionBar () y getActionBar () también son nulos, no puedo establecer el título en tiempo de ejecución.
Ninja Coding

1
@Ninja_Coding, intenta llamarlo desde la Actividad.
John Perry

241

Solo para su información, puede hacerlo opcionalmente desde el XML.

En AndroidManifest.xml, puede configurarlo con

android:label="My Activity Title"

O

android:label="@string/my_activity_label"

Ejemplo:

    <activity
        android:name=".Splash"
        android:label="@string/splash_activity_title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

28
¿Por qué votarías esto? Es bueno saber que también puedes hacerlo desde el XML.
BullShark el

8
Esta es la forma más básica de hacerlo, con referencias a cadenas externas para permitir una fácil localización. Se debe aceptar la respuesta.
Davor

10
No es lo mismo que setTitle (). La configuración de la propiedad android: label de la actividad del iniciador también cambiará el nombre de la aplicación en la pantalla de aplicaciones del teléfono. El ícono de su aplicación tendrá el título "Mi título de actividad".
Doron Zehavi el

2
@doran Si bien tienes razón, y su ejemplo es incorrecto, también tiene razón. Su problema es agregar una etiqueta a una pantalla de inicio, y no lo haría para una pantalla de inicio, sino simplemente etiquetarlo con el nombre de la aplicación. Sin embargo, la etiqueta para toda la aplicación es lo que determina el título dado al lanzador si está configurado
Pazuzu156

1
Esta debería ser la mejor respuesta.
MaXi32

24

Si lo desea una vez y deja que el sistema maneje el resto (no dinámico), haga lo siguiente en su archivo de manifiesto:

<application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name_full" > //This is my custom title name on activity. <- The question is about this one.
            <intent-filter android:label="@string/app_launcher_name" > //This is my custom Icon title name (launcher name that you see in android apps/homescreen)
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

14
setTitle(getResources().getText(R.string.MyTitle));

@Sujay sí, puedes, aquí estás: prueba {int labelRes = getPackageManager (). GetActivityInfo (getComponentName (), 0) .labelRes; Logger.d (this.getClass (). GetSimpleName (), "labelRes:" + labelRes); if (labelRes> 0 && getSupportActionBar ()! = null) {getSupportActionBar (). setTitle (labelRes); }} catch (PackageManager.NameNotFoundException excepción) {Logger.d (this.getClass (). getSimpleName (), "excepción capturada:" + Log.getStackTraceString (excepción)); }
user1510006

9

Esto funcionó para mí.

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment, container, false);
    getActivity().setTitle("My Title");
//...
}

7

Hay una manera más rápida, solo usa

YourActivity.setTitle("New Title");

También puede encontrarlo dentro de onCreate () con esto, por ejemplo:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.setTitle("My Title");
    }

Por cierto, lo que simplemente no puede hacer es llamar a setTitle () de forma estática sin pasar ningún objeto Activity.


esto no funciona al presionar el botón de espera y volver a activar la pantalla. El título no se actualiza. ¿Algunas ideas?
Jim Clermonts

Esto se debe a que onCreate () no se llamará en su ejemplo. Debería considerar usar otro controlador de eventos en su lugar, como onResume (). Le sugiero que vea este enlace: developer.android.com/guide/components/activities/…
Defrag

4

Si tiene varias actividades, puede configurarlo así en AndroidManifest.xml

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".NumbersActivity"
        android:label="@string/category_numbers"
        android:theme="@style/category_numbers" />
    <activity
        android:name=".FamilyActivity"
        android:label="@string/category_family"
        android:theme="@style/category_family" />
    <activity
        android:name=".ColorsActivity"
        android:label="@string/category_colors"
        android:theme="@style/category_colors" />
    <activity
        android:name=".PhrasesActivity"
        android:label="@string/category_phrases"
        android:theme="@style/category_phrases" />
    <activity
        android:name=".ExperimentActivity"
        android:label="@string/category_experiment"
        android:theme="@style/category_experiment" />
</application>

Hice exactamente así, no funcionó. en cada actividad que estoy viendo solo el nombre de la aplicación. Incapaz de cambiarlo. ha pasado más de media hora :(
krupesh Anadkat

2

Estoy usando Android Studio 3.0.1.

Con una actividad:

setTitle("Title Text");

Dentro de un fragmento:

getActivity().setTitle("Title Text");

2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Main_Activity);
    this.setTitle("Title name");
}

1

Si desea establecer el título en el archivo Java, escriba su actividad en Crear

setTitle("Your Title");

si quieres en Manifiesto entonces escribe

    <activity
        android:name=".MainActivity"
        android:label="Your Title" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

1

Tengo una barra de herramientas en mi actividad y una actividad base que anula todos los títulos. Así que tuve que usar setTitle en onResume () en la Actividad así:

@Override
  protected void onResume() {
    super.onResume();
    toolbar.setTitle(R.string.title);
  }

1

El código me ayudó a cambiar el título.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_name);
    ActivityName.this.setTitle("Your Activity Title");}

0

Si desea cambiar el Título de actividad cuando cambia de actividad, haga clic en el Botón. Declare las variables necesarias en MainActivity:

    private static final String TITLE_SIGN = "title_sign";
    ImageButton mAriesButton;

Agregue onClickListener en onCreate () y haga un nuevo intento para otra actividad:

    mTitleButton = (ImageButton) findViewById(R.id.title_button);
    mTitleButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent intent = new Intent(MainActivity.this, 
        SignActivity.class);
        String title_act = getText(R.string.simple_text).toString();
        intent.putExtra("title_act", title_act);
        startActivity(intent);
        finish();
        }
    });

Código SecondActivity en onCreate ():

    String txtTitle = getIntent().getStringExtra("title_act");
    this.setTitle(txtTitle);

-1

Si está utilizando onCreateOptionsMenu , también se puede añadir setTitle código en onCreateOptionsMenu.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);

    setTitle("Neue Aktivität");
    return true;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.