Como alterar o título da atividade no Android?


227

estou usando

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

alterar o título da minha atividade atual, mas parece não funcionar.

Alguém pode me orientar sobre como mudar isso?

Respostas:


498

Tente setTitle por si só, assim:

setTitle("Hello StackOverflow");

1
setTitle não funciona para mim, getSupportActionBar () e getActionBar () também nulos. Não posso definir o título em tempo de execução.
Ninja Coding

1
@ Ninja_Coding, tente chamá-lo da Atividade.
John Perry

241

Apenas um FYI, você pode opcionalmente fazê-lo a partir do XML.

No AndroidManifest.xml, você pode configurá-lo com

android:label="My Activity Title"

Ou

android:label="@string/my_activity_label"

Exemplo:

    <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 que você votaria isso? É bom saber que você também pode fazer isso a partir do XML.
bullshark

8
Essa é a maneira correta de fazer isso, com referências a cadeias externas para facilitar a localização. Deve ser aceita resposta.
Davor

10
Não é o mesmo que setTitle (). A configuração da propriedade android: label da atividade do iniciador também mudará o nome do aplicativo na tela de aplicativos do telefone. O ícone do seu aplicativo terá a legenda "Meu título da atividade".
Doron Zehavi

2
@doran Enquanto você estiver certo, e o exemplo dele estiver errado, ele também está certo. O problema dele é adicionar um rótulo a uma tela inicial, e você não faria isso em uma tela inicial, apenas rotule-o com o nome do aplicativo. No entanto, o rótulo para o aplicativo inteiro é o que determina o título dado ao lançador se ele está definido
Pazuzu156

1
Essa deve ser a melhor resposta.
MaXi32

24

Se você desejar uma vez e deixar o sistema lidar com o restante (não dinâmico), faça o seguinte no seu arquivo de manifesto:

<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 sim, você pode, aqui está: tente {int labelRes = getPackageManager (). GetActivityInfo (getComponentName (), 0) .labelRes; Logger.d (this.getClass (). GetSimpleName (), "labelRes:" + labelRes); if (labelRes> 0 && getSupportActionBar ()! = null) {getSupportActionBar (). setTitle (labelRes); }} catch (exceção PackageManager.NameNotFoundException) {Logger.d (this.getClass (). getSimpleName (), "exceção capturada:" + Log.getStackTraceString (exceção)); }
user1510006

9

Isso funcionou para mim.

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

7

Existe uma maneira mais rápida, basta usar

YourActivity.setTitle("New Title");

Você também pode encontrá-lo dentro do onCreate () com isso, por exemplo:

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

A propósito, o que você simplesmente não pode fazer é chamar setTitle () de maneira estática sem passar nenhum objeto Activity.


isso não funciona ao pressionar o botão de espera e ativar a tela novamente. O título não é atualizado. Alguma ideia?
Jim Clermonts

Isso ocorre porque onCreate () não será chamado no seu exemplo. Você deve considerar usar outro manipulador de eventos, como onResume (). Eu sugiro que você veja este link: developer.android.com/guide/components/activities/…
Defrag

4

Se você tiver várias atividades, poderá configurá-lo assim em 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>

eu fiz exatamente assim, não funcionou. em todas as atividades que vejo apenas o nome do aplicativo. Não foi possível alterá-lo. está agora há mais de meia hora :(
krupesh Anadkat

2

Estou usando o Android Studio 3.0.1.

Com uma atividade:

setTitle("Title Text");

Dentro de um 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

Se você deseja definir o título no arquivo Java, escreva sua atividade emCriar

setTitle("Your Title");

se você quiser no Manifest, escreva

    <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

Eu tenho uma barra de ferramentas em minha atividade e uma atividade base que substitui todos os títulos. Então, eu tive que usar setTitle em onResume () na atividade da seguinte maneira:

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

1

O código me ajudou a mudar o título.

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

0

Se você deseja alterar o título da atividade ao alterar a atividade, clique no botão. Declare as variáveis ​​necessárias em MainActivity:

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

Adicione onClickListener em onCreate () e crie novas intenções para outra atividade:

    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 em onCreate ():

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

-1

Se você estiver usando onCreateOptionsMenu , também poderá adicionar o código setTitle no onCreateOptionsMenu.

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

    setTitle("Neue Aktivität");
    return true;
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.