2012-08-02 17 views
5

मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं जो टुकड़ों का उपयोग कर रहा है जो मास्टर/विस्तार फॉर्म से अधिक है। मैं मुख्य गतिविधि को बाईं तरफ चुने गए आइटम के आधार पर बाएं तरफ एक सूची टुकड़ा शामिल करना चाहता हूं, मैं दाईं ओर अलग-अलग लेआउट के साथ एक टुकड़ा प्रदर्शित करना चाहता हूं। (नोट: दाईं ओर प्रत्येक टुकड़े को विभिन्न लेआउट/विचारों की आवश्यकता होती है)एंड्रॉइड में विभिन्न लेआउट के साथ टुकड़े कैसे स्वैप करें?

मेरे द्वारा किए गए सभी उदाहरणों में कुछ मूल्यों को बदलकर या नए टुकड़ों को बदलकर/बदलकर दाईं ओर केवल एक आम टुकड़ा का उपयोग करना है एक ही लेआउट है।

अगर कोई इस समस्या पर कुछ प्रकाश डाल सकता है तो यह मुझे बहुत मदद करेगा। धन्यवाद!

उत्तर

9

यदि आप अपने टुकड़ों को पकड़ने के लिए framelayouts का उपयोग कर रहे हैं, तो यह वही है जैसा आप उल्लेख करते हैं। आप बस अपने टुकड़े को तुरंत चालू करें (जो भी लेआउट) और इसे दूसरे के स्थान पर framelayout में स्वैप करें।

यदि आपने एक्सएमएल में अपने टुकड़े हार्डकोड किए हैं, तो आप ऐसा करने में सक्षम नहीं होंगे (जहां तक ​​मैं निर्धारित करने में सक्षम हूं)।

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/frames" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@id/hline1" 
    android:layout_below="@id/horizontalline" 
    android:orientation="horizontal" > 
    <FrameLayout 
     android:id="@+id/leftpane" 
     android:layout_width="0px" 
     android:layout_height="match_parent" 
     android:layout_weight=".4" /> 
    <TextView 
     android:id="@+id/verticalline" 
     android:layout_width="2dp" 
     android:layout_height="match_parent" 
     android:background="@color/bar_background" 
     android:gravity="center_horizontal" 
     android:paddingLeft="5dip" 
     android:paddingRight="5dip" /> 
    <FrameLayout 
     android:id="@+id/rightpane" 
     android:layout_width="0px" 
     android:layout_height="match_parent" 
     android:layout_weight="1" > 
    </FrameLayout> 
</LinearLayout> 

तो फिर तुम framelayout में अपने टुकड़ा डाल करने के लिए framelayout और अपने instantiated टुकड़ा के नाम के लिए आईडी का उपयोग करें।

EventListFragment eventlist = new EventListFragment(); 
getFragmentManager().beginTransaction().replace(R.id.leftpane, eventlist).commit(); 

EventDetailFragment eventadd = new EventDetailFragment(); 
getFragmentManager().beginTransaction().replace(R.id.rightpane, eventadd).commit(); 

आप सामग्री को बदलना चाहते हैं, तो आप फिर से एक ही बात करते हैं (एक नई/अलग टुकड़ा, हो सकता है, जिसके साथ दाएँ फलक में टुकड़ा जगह लेंगे निम्नलिखित यह खुद, अलग, के साथ जुड़े लेआउट है यह):

EventSuperDetailFragment eventsuper = new EventSuperDetailFragment(); 
getFragmentManager().beginTransaction().replace(R.id.rightpane, eventsuper).commit(); 
+0

आपकी मदद के लिए बहुत बहुत धन्यवाद! टुकड़ा अवधारणा मेरे लिए काफी नया है। क्या आप अपने बिंदु को कुछ सरल उदाहरण के साथ चित्रित कर सकते हैं? –

+0

मैंने अपना जवाब अपडेट कर लिया है, उम्मीद है कि यह आपको सही दिशा में इंगित करेगा। मुझे बताएं! – Barak

+0

धन्यवाद बराक !!! हाँ, यह काम किया! इसके अलावा मैं जानना चाहता था कि एक टुकड़े के भीतर एक टुकड़ा बनाना संभव है या नहीं। –

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