¿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?

UMAR
fuente

Respuestas:

498

Prueba setTitle por sí mismo, así:

setTitle("Hello StackOverflow");
jeffh
fuente
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>
BullShark
fuente
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>
hB0
fuente
14
setTitle(getResources().getText(R.string.MyTitle));
Gennady Kozlov
fuente
@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");
//...
}
moberme
fuente
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.

desfragmentación
fuente
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>
SGX
fuente
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");
adrian
fuente
2
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.Main_Activity);
    this.setTitle("Title name");
}
Govind Maheshwari
fuente
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>
Gundu Bandagar
fuente
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);
  }
Hissatsu
fuente
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");}
Rohan Gupta
fuente
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);
Egor Voevodin
fuente
-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;
}
Umut D.
fuente