Android에서 활동 제목을 변경하는 방법은 무엇입니까?


227

나는 사용하고있다

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

현재 활동의 제목을 변경했지만 작동하지 않는 것 같습니다.

누구든지 이것을 변경하는 방법을 안내 할 수 있습니까?

답변:


498

다음과 같이 setTitle 자체를 시도하십시오.

setTitle("Hello StackOverflow");

1
setTitle이 작동하지 않습니다. getSupportActionBar () 및 getActionBar ()도 null입니다. 런타임에서 제목을 설정할 수 없습니다.
닌자 코딩

1
@ Ninja_Coding, Activity에서 호출하십시오.
John Perry

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

8
이것은 쉽게 현지화 할 수 있도록 외부 문자열에 대한 참조와 함께 그것을 수행하는 가장 중요한 방법입니다. 대답을 받아 들여야합니다.
Davor

10
setTitle ()과 동일하지 않습니다. 실행기 활동의 android : label 속성을 설정하면 휴대 전화의 애플리케이션 화면에서 애플리케이션 이름이 변경됩니다. 응용 프로그램 아이콘에는 "내 활동 제목"캡션이 있습니다.
Doron Zehavi

2
@doran 당신이 옳고 그의 모범이 어떤 식으로 틀렸지 만, 그는 또한 옳습니다. 그의 문제는 스플래시 화면에 레이블을 추가하는 것입니다. 스플래시 화면에서는 레이블을 추가하지 않고 앱 이름으로 레이블을 지정하면됩니다. 그러나 전체 응용 프로그램의 레이블은 런처가 설정되어있는 경우 제목이 결정됩니다.
Pazuzu156

1
이것이 가장 좋은 대답이어야합니다.
MaXi32

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 예외) {Logger.d (this.getClass (). getSimpleName (), "예외 포착 :"+ Log.getStackTraceString (exception)); }
user1510006

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 ()을 호출하는 것입니다.


대기 버튼을 누르고 화면을 다시 활성화하면 작동하지 않습니다. 제목이 업데이트되지 않습니다. 어떤 아이디어?
Jim Clermonts

예제에서 onCreate ()가 호출되지 않기 때문입니다. onResume ()과 같은 다른 이벤트 핸들러를 대신 사용해야합니다. 이 링크를 확인하시기 바랍니다 : developer.android.com/guide/components/activities/…
Defrag

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");

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

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

내 활동에 툴바가 있고 모든 제목을 재정의하는 기본 활동이 있습니다. 따라서 Activity의 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.