2012-02-07 14 views
9

मैं ActionBar और नीचे दो टैब के साथ एक ऐप बना रहा हूं। डिवाइस/एमुलेटर घुमाए जाने पर सब कुछ ठीक काम करता है। यदि घूर्णन किया गया है, तो टैब स्थिति स्वचालित रूप से टैब 1 पर स्विच करती है (सामान्य, क्योंकि onCreate कॉल किया जाता है) लेकिन सामग्री परिवर्तित नहीं होती है। यदि मैं नए अभिविन्यास में एक टैब का चयन करता हूं, तो चयनित Fragment से onCreateView() विधि कॉल की जाती है लेकिन दृश्य अपडेट नहीं होता है (हमेशा वही रहें)। कोई सुझाव?घुमाव पर टुकड़े के साथ एक्शनबार टैब

कोड।

मुख्य गतिविधि:

ActionBar actionbar = getActionBar(); 
    actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

    ActionBar.Tab ATab = actionbar.newTab().setText(R.string.player); 
    ActionBar.Tab BTab = actionbar.newTab().setText(R.string.stations); 

    Fragment AFragment = new AFragment(); 
    Fragment BFragment = new BFragment(); 

    PlayerTab.setTabListener(new MyTabsListener(AFragment)); 
    StationsTab.setTabListener(new MyTabsListener(BFragment)); 

    actionbar.addTab(ATab); 
    actionbar.addTab(BTab); 

समान टैब है कि एक साधारण TextView प्रदर्शन के साथ

। टेक्स्टव्यू सरल कहता है कि कौन सा टैब चुना गया है।

टुकड़े:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.a, container, false); 
} 

टुकड़ा लेआउट, जैसा कि ऊपर उल्लेख, केवल हार्डकोडेड पाठ के साथ एक TextView में शामिल है। (केवल परीक्षण उद्देश्यों के लिए)


मुख्य लेआउट इस तरह दिखता है।

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 


    <LinearLayout 
     android:id="@+id/fragment_container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 
</LinearLayout> 

</LinearLayout> 
+0

क्या आप चाहते हैं OnCreate() जब डिवाइस घुमाया जाता है के नाम से जाना? – nhaarman

+0

हां और नहीं, इस उदाहरण में यह ठीक है। अंतिम ऐप में, ठीक है, लेकिन मुझे लगता है कि सबसे अच्छा तरीका नहीं है। क्या आप 'android का उपयोग करना चाहते हैं: configChanges =" keyboardHidden | ओरिएंटेशन "'? मैंने इसके बारे में पढ़ा और किसी ने मेमोरी लीक और अंतिम उपाय के बारे में कुछ कहा। क्या वह सही है? क्या कोई बेहतर तरीका है? – Leandros

उत्तर

19

हल हो गया। मैंने हर बार टुकड़े को फिर से बनाया है, ऐसा नहीं करता है कि अब इसे हल किया जाए।

मेरी TabListener और onTabSelected(Tab tab, FragmentTransaction ft) में बदल दिया है, ft.add()ft.replace() को

+2

यह बग आधिकारिक एंड्रॉइड दस्तावेज़ों में भी है: http://developer.android.com/guide/topics/ui/actionbar.html#Tabs शायद कोई भी इसे ठीक कर सकता है। – StefanMK

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