2015-10-15 7 views
6

के साथ बदल रहा 3 टुकड़े के अंदर (गृह-प्रवेश-RestorePass) प्रारंभ में, HomeFragment शो और अन्य दो छिपे हुए हैं के साथ 1 गतिविधि को चालू किया। मैं चाहता हूं कि कौन सा टुकड़ा दिखा रहा है, इस पर निर्भर करता है कि एक्शनबार शीर्षक बदलता है।ActionBar शीर्षक गतिशील टुकड़ा

मैं के साथ मेरी गतिविधि में कोशिश कर रहा हूँ:

public void setActionBarTitle(String title){ 
    getSupportActionBar().setTitle(title); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    // Set title 
    setActionBarTitle(getString(R.string.app_name)); 
} 

और टुकड़े एक ही है:

@Override 
public void onResume() { 
    super.onResume(); 
    // Set title 
    ((LoginActivity) getActivity()).setActionBarTitle(getString(R.string.fragment_login)); 
} 

लेकिन यह काम नहीं करता। यह शीर्षक पर R.string.fragment_login दिखाता है।

मैं टुकड़ा संक्रमण के लिए FragmentTransaction उपयोग कर रहा हूँ:

btnLogin.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      FragmentTransaction ft = getFragmentManager().beginTransaction(); 
      ft.setCustomAnimations(android.R.anim.slide_in_left, android.R.anim.slide_out_right); 
      HomeFragment homeFragment = (HomeFragment) getFragmentManager().findFragmentById(R.id.fragmentHome); 
      LoginFragment loginFragment = (LoginFragment) getFragmentManager().findFragmentById(R.id.fragmentLogin); 
      ft.hide(homeFragment).addToBackStack(null); 
      ft.show(loginFragment).addToBackStack(null).commit(); 
     } 
    }); 

इसके अतिरिक्त अगर मैं ActionBar पर एक तीर बटन (वापस) टुकड़ा के आधार पर बहुत अच्छा होगा प्रकट कर सकता है।

आपके समय के लिए धन्यवाद! सादर।

+0

आप 'जोड़ने का उपयोग कर विचार()'/'पर अपने' Fragment's बल्कि 'शो से निकाल सकते हैं()' है() '/' छिपाने() '? समस्या यह दिखती है कि यह एक्शन बार शीर्षक को बदलने के लिए विवादित कॉल के कारण हो सकता है, यहां तक ​​कि छुपा 'Fragments' भी "सक्रिय" हैं, उनमें केवल यूआई की कमी है। साथ ही, 'फ्रैगमेंट'' ऑन रीज्यूम() 'कॉल आपकी' गतिविधि' के बाद आता है, और दोनों में 'स्पष्ट रूप से' आपके कोड (आपके कोड द्वारा जाकर) शीर्षक को 'fragment_login'' पर सेट किया गया है ...? – PPartisan

+0

@PPartisan आपके समय के लिए धन्यवाद, मैंने जोड़ने()/निकालने() के साथ प्रयास किया लेकिन यह काम नहीं करता है, अन्य 2 टुकड़े मुख्य खंड पर हैं, स्पष्ट रूप से हटाएं() गतिविधि दृश्य से टुकड़े नहीं लेते हैं। मेरे सभी टुकड़ों में इसका अनूठा सेटएक्शनबर्टटाइट (* फ्रैगमेंटस्ट्रिंग *) कॉल है। मैंने गलत व्यक्त किया, क्षमा करें। फिर से धन्यवाद :) –

+0

इस लिंक को देखें https://stackoverflow.com/a/46705242/1770868 –

उत्तर

8

उपयोग गतिविधि में इस विधि Fragment बदल सकते हैं और शीर्षक प्रोग्राम के रूप में स्थापित करने के लिए:

private void displayFragment(int position) { 
    // update the main content by replacing fragments 
    Fragment fragment = null; 
    String title = ""; 
    switch (position) { 
    case 0: 
     fragment = new Home(); 
     title = "Home"; 
     break; 
    case 1: 
     fragment = new Login(); 
     title = "Login"; 
     break; 
    case 2: 
     fragment = new RestorePass(); 
     title = "Restore Password"; 
     break; 

    default: 
     break; 
    } 

    // update selected fragment and title 
    if (fragment != null) { 
     getSupportFragmentManager().beginTransaction() 
       .replace(R.id.frame_container, fragment).commit(); 
     getSupportActionBar().setTitle(title); 
     // change icon to arrow drawable 
     getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_arrow); 
    } 
} 

उदाहरण के लिए, यदि आप चाहते टुकड़ा Home प्रदर्शित करने के लिए:

displayFragment(0); 
+0

मैं f% और (# ing love you =) haha ​​.. इसके साथ आप मुझे 3 संदेह हल करते हैं। धन्यवाद, अच्छा सप्ताहांत। –

7

ध्यान दें यदि आप समर्थन लाइब्रेरी का उपयोग कर रहे हैं, तो आप जब आप इसे getActivity() के माध्यम से प्राप्त विशेष रूप से अपनी गतिविधि कास्ट करने के लिए रख सकते हैं। और फिर आप यह सुनिश्चित करना चाहते हैं कि आप getSupportActionBar() का उपयोग करके एक समर्थन एक्शनबार प्राप्त कर रहे हैं। मैं अपने टुकड़ा के onResume() में निम्न कोड का उपयोग करके मेरे एप्लिकेशन में ActionBar शीर्षक सेट करने में सक्षम था ...

@Override 
public void onResume() { 
    super.onResume(); 
    AppCompatActivity activity = (AppCompatActivity) getActivity(); 
    ActionBar actionBar = activity.getSupportActionBar(); 
    actionBar.setTitle(R.string.my_fragment_title); 
} 
+0

यह ठीक काम कर रहा है। धन्यवाद – sivaprakash

0

आप गतिविधि सेट करते हैं ०१२३११३८९७० में android:label="" विशेषताआप शीर्षक पोस्ट प्रारंभिक सेट करने में सक्षम होंगे। मैंने टूलबार स्रोत कोड के माध्यम से इस ट्रेसिंग की खोज की।

संबंधित मुद्दे