एंड्रॉइड में गतिविधि का शीर्षक कैसे बदलें?


227

मै इस्तेमाल कर रहा हूँ

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

मेरी वर्तमान गतिविधि का शीर्षक बदलने के लिए, लेकिन यह काम नहीं करता है।

क्या कोई मुझे बता सकता है कि इसे कैसे बदला जाए?

जवाबों:


498

इस तरह से, सेटटाइटल आज़माएं:

setTitle("Hello StackOverflow");

1
setTitle मेरे लिए काम नहीं कर रहा है, getSupportActionBar () और getActionBar () भी अशक्त करता है कि मैं रनटाइम में शीर्षक सेट नहीं कर सकता।
निंजा कोडिंग

1
@ निंजा_कोडिंग, इसे गतिविधि से कॉल करने का प्रयास करें।
जॉन पेरी

241

सिर्फ एक FYI करें, आप वैकल्पिक रूप से 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 से भी कर सकते हैं।
बुलशार्क

8
यह आसान स्थानीयकरण को सक्षम करने के लिए बाहरी तार के संदर्भ के साथ, इसे करने के लिए बहुत अधिक तरीका है। उत्तर स्वीकार किया जाना चाहिए।
डावोर

10
यह सेटटल () के समान नहीं है। एंड्रॉइड सेट करना: लॉन्चर एक्टिविटी की लेबल प्रॉपर्टी फोन के एप्लिकेशन स्क्रीन पर एप्लिकेशन का नाम भी बदल देगी। आपके एप्लिकेशन के आइकन में "मेरी गतिविधि शीर्षक" कैप्शन होगा।
डोरोन ज़ाहवी

2
@ डोरन आप सही हैं, और उसका उदाहरण एक तरह से गलत है, वह भी सही है। उसका मुद्दा स्प्लैश स्क्रीन पर एक लेबल जोड़ रहा है, और आप एक स्प्लैश स्क्रीन के लिए ऐसा नहीं करेंगे, बल्कि इसे केवल ऐप नाम से लेबल करें। हालाँकि पूरे अनुप्रयोग के लिए लेबल वही है जो लॉन्चर को दिए गए शीर्षक को निर्धारित करता है यदि वह सेट है
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));

@ सुजय, आप कर सकते हैं, आप यहाँ हैं: {int labelRes = getPackageManager () प्राप्त करें। getActivityInfo (getComponentName (), 0) .labelRes; Logger.d (this.getClass ()। GetSimpleName (), "labelRes:" + labelRes); if (labelRes> 0 && getSupportActionBar ()! = null) {getSupportActionBar ()। setTitle (labelRes); }} पकड़ (PackageManager.NameNotFoundException अपवाद) {Logger.d (this.getClass ()। getSimpleName (), "अपवाद पकड़ा गया:" + Log.getStackTraceString (अपवाद); }
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");
    }

वैसे, आप जो कुछ नहीं कर सकते हैं, वह सेटटाइटल () को किसी भी गतिविधि वस्तु को पारित किए बिना स्थिर तरीके से करना है।


स्टैंडबाई बटन दबाने और स्क्रीन को फिर से सक्रिय करने पर यह काम नहीं करता है। शीर्षक अद्यतन नहीं करता है। कोई विचार?
जिम क्लेरमॉंट्स

ऐसा इसलिए है क्योंकि onCreate () को आपके उदाहरण में नहीं बुलाया जाएगा। आपको इसके बजाय किसी अन्य ईवेंट हैंडलर का उपयोग करने पर विचार करना चाहिए, जैसे onResume ()। मेरा सुझाव है कि आप इस लिंक को देखें: developer.android.com/guide/compenders/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>

मैं इस तरह से किया, यह काम नहीं किया। हर गतिविधि पर मैं सिर्फ ऐप का नाम देख रहा हूं। इसे बदलने में असमर्थ। अब आधे घंटे से अधिक समय हो गया है :(
क्रुपेश अनादकट

2

मैं एंड्रॉइड स्टूडियो 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 () में सेटटाइटल का उपयोग करना पड़ा:

@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 में दूसरा सक्रियता कोड ():

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

-1

यदि आप onCreateOptionsMenu का उपयोग कर रहे हैं , तो आप onCreateOptionsMenu में सेटटाइट कोड भी जोड़ सकते हैं ।

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

    setTitle("Neue Aktivität");
    return true;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.