2010-10-25 16 views
12

क्या अलग-अलग विचार प्रस्तुत करने के लिए एक गतिविधि के दौरान अलग-अलग आईडी के साथ setContentView (id) कई बार कॉल करने का कोई तरीका है या क्या मुझे बिल्कुल एक नई गतिविधि शुरू करनी है?कॉलिंग सेटकंटेंट व्यू() एकाधिक बार

उत्तर

10

प्रति Austyn की टिप्पणी, मैं, कैसे ViewFlipper उपयोग करने के लिए एक और पोस्ट में यह पूरा करने पर कुछ मार्गदर्शन का पता लगाने का प्रबंधन कैसे किया (checkmarked शीर्ष जवाब here देखें।)

आप ViewFlipper का उपयोग नहीं करना चाहते हैं, तो मैं

एक्सएमएल:

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <ImageView 
     android:src="@drawable/icon" 
     android:scaleType="fitCenter" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent"/> 
    <TextView 
     android:text="Learn-Android.com" 
     android:textSize="24sp" 
     android:textColor="#000000" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:gravity="center"/> 
</FrameLayout> 

कोड:

कैसे एक ही दृश्य here में लेआउट के बीच स्विच करने के लिए का एक अच्छा उदाहरण पाया
private void SwitchLayout2() { 
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1); 
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2); 

// Enable Layout 2 and Disable Layout 1 
Layout1 .setVisibility(View.GONE); 
Layout2.setVisibility(View.VISIBLE); 
} 

private void SwitchLayout1() { 
RelativeLayout Layout1 = (RelativeLayout)findViewById(R.id.layout1); 
RelativeLayout Layout2 = (RelativeLayout)findViewById(R.id.layout2); 

// Enable Layout 1 & Disable Layout2 
Layout1.setVisibility(View.VISIBLE); 
Layout2.setVisibility(View.GONE); 
} 
+4

आपको वास्तव में ऐसा करने के लिए 'व्यूफ्लिपर' का उपयोग करना चाहिए और प्रत्येक 'व्यू' –

+1

@AustynMahoney पर दृश्यता को बदलना नहीं चाहिए, यह जानना बहुत अच्छा होगा कि Glenviewjeff के बजाय ViewFlipper का उपयोग करने का सबसे अच्छा अभ्यास क्यों है वर्णित विधि। – user438293456

+0

एंड्रॉइड पहले से ही इस सटीक चीज़ को पूरा करने के लिए एक बहुत ही आसान तरीका प्रदान करते समय आप पहिया को फिर से शुरू करना चाहते हैं? क्या होता है जब आप इसे 3 लेआउट में विस्तारित करना चाहते हैं, या शायद 18? यदि आपने 'व्यूफ्लिपर' का उपयोग किया है तो यह आसान है, अगर आपने उस कोड बेस को बनाए रखने के लिए अच्छी किस्मत अच्छी नहीं है। –

4

नहीं, आप इसे कई बार आसानी से नहीं बुला सकते हैं। आपको अलग-अलग विचारों के बीच स्विच करने के लिए या तो सभी विचारों को पूरी तरह से हटाने की आवश्यकता है और फिर नया लेआउट बढ़ाएं, या ViewFlipper (या FrameLayout) का उपयोग करें।

एक तरफ ध्यान दें, इस सवाल से पहले पूछा गया है, हालांकि मैं इसे तुरंत नहीं ढूंढ सका।

0

आप अपनी गतिविधि से कोशिश कर सकते हैं:

getWindow().addContentView(View, ViewGroup.LayoutParams); 

दो सामग्री को देखने के दूसरे के शीर्ष पर हो जाएगा। लेकिन, इस तरह से जोड़े गए एक निश्चित दृश्य को हटाने का कोई आसान तरीका नहीं है।

यह भी ध्यान रखें कि अंतिम कॉल के बाद setContentView पर कॉल करने से, पिछले सभी जोड़े गए सामग्री दृश्यों को हटा दिया जाएगा।

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