Androidでアクティビティのタイトルを変更するにはどうすればよいですか?


227

使ってます

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

現在のアクティビティのタイトルを変更しますが、動作しないようです。

これを変更する方法について誰かが私を案内できますか?

回答:


498

次のように、setTitleを単独で試してください。

setTitle("Hello StackOverflow");

1
setTitleが機能しません。getSupportActionBar()およびgetActionBar()もnullです。実行時にタイトルを設定できません。
Ninja Coding

1
@Ninja_Coding、アクティビティから呼び出してみてください。
ジョンペリー

241

参考までに、XMLからオプションで実行できます。

AndroidManifest.xmlでは、次のように設定できます

android:label="My Activity Title"

または

android:label="@string/my_activity_label"

例:

    <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
なぜこれに反対票を投じるのですか?XMLからも実行できることを知っておくとよいでしょう。
BullShark 2013

8
これは、ローカライズを容易にするために外部文字列を参照することで、これを行うための中心的な方法です。受け入れられるべき答え。
Davor 2013

10
これはsetTitle()と同じではありません。ランチャーアクティビティのandroid:labelプロパティを設定すると、携帯電話のアプリケーション画面上のアプリケーションの名前も変更されます。アプリケーションのアイコンには、「マイアクティビティタイトル」というキャプションが付いています。
Doron Zehavi 2014

2
@doranあなたは正しいが、彼の例はある意味で間違っているが、彼も正しい。彼の問題は、スプラッシュスクリーンにラベルを追加することです。スプラッシュスクリーンの場合は、アプリ名でラベルを付けるだけです。ただし、アプリケーション全体のラベルは、設定されている場合にランチャーに与えられるタイトルを決定するものです
Pazuzu156

1
これが最良の答えです。
MaXi32 2017年

24

一度だけ必要で、残りを(動的ではなく)システムに処理させる場合は、マニフェストファイルで次のようにします。

<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はい、できます、ここにいます:try {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 exception){Logger.d(this.getClass()。getSimpleName()、 "exception catch:" + Log.getStackTraceString(exception)); }
user1510006 2017

9

これでうまくいきました。

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

7

より速い方法があります、使用してください

YourActivity.setTitle("New Title");

これをonCreate()内で見つけることもできます。次に例を示します。

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

ちなみに、単純にできないのは、Activityオブジェクトを渡さずに静的な方法でsetTitle()を呼び出すことです。


スタンバイボタンを押して画面を再びアクティブにすると、これは機能しません。タイトルは更新されません。何か案は?
ジムクレルモンズ

これは、例ではonCreate()が呼び出されないためです。代わりに、onResume()などの別のイベントハンドラーの使用を検討してください。:私はあなたがこのリンクを参照することをお勧めdeveloper.android.com/guide/components/activities/...
デフラグ

4

複数のアクティビティがある場合は、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>

私はまさにこのようにしました、それはうまくいきませんでした。すべてのアクティビティで、アプリ名のみが表示されます。変更できません。現在30分以上経過しています:(
krupesh Anadkat

2

Android Studio 3.0.1を使用しています。

アクティビティと:

setTitle("Title Text");

フラグメント内:

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


1

Javaファイルでタイトルを設定する場合は、アクティビティにonCreateを書き込みます

setTitle("Your Title");

マニフェストにしたい場合は、

    <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

アクティビティにツールバーがあり、すべてのタイトルを上書きする基本アクティビティがあります。だから私はそのようにアクティビティのonResume()でsetTitleを使用する必要がありました:

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

1

コードは、タイトルを変更するのに役立ちました。

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

0

ボタンをクリックしてアクティビティを変更するときに、アクティビティのタイトルを変更する場合。MainActivityで必要な変数を宣言します。

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

onCreate()にonClickListenerを追加し、別のアクティビティの新しいインテントを作成します。

    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();
        }
    });

onCreate()のSecondActivityコード:

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

-1

onCreateOptionsMenuを使用している場合は、onCreateOptionsMenusetTitleコードを追加することもできます。

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

    setTitle("Neue Aktivität");
    return true;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.