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를 사용하는 경우 onCreateOptionsMenu 에 setTitle 코드를 추가 할 수도 있습니다 .

@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.