मैं चाहता हूं कि प्रत्येक Fragment में ActionBar के शीर्षक को अनुकूलित किया जाए। उदाहरण के लिए, यदि मैं विकल्प "सूचियाँ" (जो कि एक Fragment है) का चयन करता हूं, तो ActionBar का शीर्षक "सूचियां" होना चाहिए।

मैं इसे निम्नलिखित कोड का उपयोग करके कर सकता हूं:

getActivity().setTitle("Lists");

लेकिन जब मैं MainActivity पर वापस जाता हूं (मेनू विकल्प या मोबाइल फोन पर बैक बटन का उपयोग करके) तो यह "माई एप्लिकेशन" के बजाय "सूचियां" शीर्षक रखता है जो कि डिफ़ॉल्ट शीर्षक है।

अगर मैं शीर्षक को MainActivity पर सेट करने का प्रयास करता हूं:

setTitle("My application");

यह नहीं बदला है।

मैं MainActivity के शीर्षक को कैसे बनाए रख सकता हूं और प्रत्येक Fragments में शीर्षक को कैसे संशोधित कर सकता हूं?

अग्रिम में धन्यवाद!

2
Francisco Romero 23 अगस्त 2016, 15:36

3 जवाब

सबसे बढ़िया उत्तर

अंत में मैं एक Fragment में प्रवेश करने के बाद आपके MainActivity के शीर्षक को संशोधित करने और उसमें ActionBar के शीर्षक को संशोधित करने में सक्षम हूं। मुझे इसे दो अलग-अलग घटनाओं के साथ बदलने की जरूरत थी: जब मैं एप्लिकेशन के मेनू पर क्लिक करता हूं और जब मैं मोबाइल फोन का बैक बटन दबाता हूं। मैं अपने उत्तर को दो भागों में विभाजित करूँगा, प्रत्येक घटना के लिए एक:

- जब आप अपने मोबाइल फोन पर बैक बटन दबाते हैं तो MainActivity पर शीर्षक बदलने के लिए

आपको घटना का पता लगाने के लिए अपने MainActivity.class पर onBackPressed() विधि का उपयोग करना होगा और फिर अपने ActionBar का शीर्षक बदलने के लिए setTitle विधि का उपयोग करना होगा।

@Override
public void onBackPressed() {
    setTitle("Lists");
}

- जब आप अपने मेनू में "होम" विकल्प दबाते हैं तो MainActivity पर शीर्षक बदलने के लिए।

अपनी onNavigationItemSelected विधि पर आप पता लगा सकते हैं कि जब आप "होम" विकल्प दबाते हैं और फिर एक नया Fragment शुरू करते हैं (इसे MainFragment कहते हैं) जो एक खाली लेआउट देता है ताकि यदि आप दूसरे में हों Fragment, उदाहरण के लिए AnotherFragment (एक और ActionBar शीर्षक के साथ) और आप अपने मेनू में अपना "होम" विकल्प दबाते हैं, आप फिर से अपने MainActivity के शीर्षक को डिफ़ॉल्ट के रूप में सेट कर सकते हैं आपके MainFragment में निम्नलिखित कोड के साथ:

getActivity().setTitle("Lists");

इस तरह आप अपने MainActivity के लेआउट को बनाए रखते हुए उसका शीर्षक बदल सकेंगे।

1
Francisco Romero 24 अगस्त 2016, 13:07

GetSupportActionBar().setTitle("title"); का उपयोग करने का प्रयास करें;

मैं यही उपयोग करता हूं और ऐसा लगता है कि यह अच्छा काम करता है। यहां मेरे कोड का उपयोग करके एक उदाहरण दिया गया है जहां मैं एक व्यूपेजर में टुकड़े जोड़ता हूं।

private void addPages(ViewPager pager) {
    MyFragPagerAdapter adapter = new MyFragPagerAdapter(getSupportFragmentManager());
    Intent intent = getIntent();
    String workout = intent.getStringExtra("work");
    Bundle args = new Bundle();
    args.putString("work", work);
    String title = args.getString("work");
    switch(title) {
        case "w29w1" : {
            getSupportActionBar().setTitle("Work 29 Week 1");
            break;
        }
        case "w29w2" : {
            getSupportActionBar().setTitle("Work 29 Week 2");
            break;
        }
MondayFragment mondayFragment = new MondayFragment();
    mondayFragment.setArguments(args);

उस उदाहरण में, मैं बस टूलबार का शीर्षक किसी चीज़ पर सेट कर रहा हूं, जो पिछली कक्षा से प्राप्त इरादे पर निर्भर करता है, क्योंकि डेटा के कई सेटों के लिए टुकड़े का उपयोग किया जाता है।

0
LBJ33 23 अगस्त 2016, 15:53

इस कोड को गतिविधि और Fragment दोनों के onResume() पर रखें

टुकड़ा:

@Override
    public void onResume() {
        super.onResume();
        if(getActivity().getSupportActionBar()!=null)
           getActivity().getSupportActionBar().setTitle("Lists");
    }

गतिविधि:

@Override
    protected void onResume() {
        super.onResume();
        if(getSupportActionBar()!=null)
            getSupportActionBar().setTitle("Title");
    }
0
Burhanuddin Rashid 23 अगस्त 2016, 15:56