2011-01-06 19 views
5

मेरा टैबड ऐप एक अभिविन्यास परिवर्तन के साथ दृश्य को फिर से नहीं चलाता है।एंड्रॉइड ओरिएंटेशन चेंज

मैं मुख्य टैब गतिविधि के लिए और प्रकट में प्रत्येक गतिविधि के

android:configChanges="keyboardHidden|orientation" 

गयी।

public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    setContentView(R.layout.active_alt); 
    mColorLegendBtn = (Button) findViewById(R.id.colorbtn); 
    mStatusView = (TextView) findViewById(R.id.celltitle1); 
    TextView mStatusView1 = (TextView) findViewById(R.id.celltitle2); 
    mStatusView1.setText(mStatusView1.getText()+"testcase1"); 
    mStatusView.setText(mStatusView.getText()+"testcase"); 
    initUI(); 
} 

public void initUI() { 
    l1 = (ListView) findViewById(R.id.ListView01); 
    EfficientAdapter efficientAdapter = new EfficientAdapter(mContext); 
    l1.setAdapter(null); 
    l1.setAdapter(efficientAdapter); 
} 

लांच, टैब, सूची, बटन और TextView पर सही ढंग से प्रदर्शित कर रहे हैं:

मैं प्रत्येक गतिविधि के लिए इस विधि गयी। जब मैं एमुलेटर में अभिविन्यास बदलता हूं, तो केवल टैब प्रदर्शित नहीं होते हैं, अन्य विजेट्स में से कोई भी स्क्रीन स्क्रीन नहीं है।

मुझे क्या याद आ रही है?

+0

मुझे एक बहुत ही समस्या का सामना करना पड़ा है, और एक अलग कामकाज मिला है। यह कुछ अलग-अलग उदाहरणों में प्रकट हुआ है। मेरा प्रश्न देखें [यहां] (http://stackoverflow.com/questions/8103639/android-orientation-change-causes-imageview-to-dissapear)। –

उत्तर

0

क्या यह हो सकता है कि आपका लेआउट लैंडस्केप/पोर्ट्रेट मोड में काम न करे? घूर्णन के बाद आपको ऐप शुरू करने का प्रयास करें, जांचें कि क्या यह वही परिणाम देता है। यदि ऐसा है: अपना लेआउट ठीक करें: डी

+0

ऐप दोनों ओरिएंटेशन में काम करता है। जब किसी भी दिशा में अभिविन्यास बदलता है तो यह फिर से नहीं चलता है। – Tori

+0

टैब ... क्या आप टैब के साथ एक सारणीयता का उपयोग कर रहे हैं जो स्वयं की गतिविधियां हैं? क्या आपने अपनी सारणीयता में कोड भी जोड़ा था? मैं यह जांचने के लिए कुछ लॉगिंग जोड़ूंगा कि ऑन कॉन्फ़िगर किए गए फ़ंक्शंस को क्या कहा जाता है, और कब। – Nanne

+0

हां, मैंने टैबएक्टिविटी पर ऑन कॉन्फ़िगर किया गया है, और लॉग के साथ मैं देख सकता हूं कि onconfigchanged दोनों टैब गतिविधि और गतिविधि प्रदर्शित होने पर कॉल किया जाता है। मुद्दा यह है कि दृश्य नहीं दिखाया गया है। – Tori

5

मुझे बिल्कुल यह समस्या थी। बहुत परीक्षण और त्रुटि के बाद, मैंने अंततः मैनिफेस्ट में एक-पंक्ति परिवर्तन करके इसे हल किया।

चाल अपने TabActivity के प्रकट में प्रवेश के लिए

android:configChanges="orientation|keyboardHidden" 

जोड़ना है। अकेले सभी बाल गतिविधियों को छोड़ दें। TabActivity में भी लागू करने से भी परेशान न करें।

मुझे नहीं पता कि यह कैसे काम करता है या क्यों लगता है, लेकिन प्रभाव लेआउट रीफ्रेश किया गया है, और नए अभिविन्यास में टैब और बाल गतिविधि सामग्री दोनों को सही ढंग से फिर से खींचा जाता है।

+1

धन्यवाद। यह बहुत अच्छा था। मेरे लिए काम किया –

+0

फिर यदि हम ऊपर पंक्ति कोड में लिखते हैं तो यह लेआउट-लैंड फ़ोल्डर से एक्सएमएल नहीं लेगा। – RobinHood

1

सफलता के साथ मैंने पाया सबसे अधिक नियंत्रण के साथ ऐसा तरह एक अलग एक्सएमएल में लैंडस्केप मोड के लिए अपने लेआउट एक्सएमएल बनाने के लिए है स्क्रीन परिवर्तन किए जाने की है कि सबसे अच्छा तरीका है:

res/layout-land/youractivity.xml 

का उपयोग कर/लेआउट/और/लेआउट भूमि/आपके लेआउट के साथ-साथ ग्राहम बोर्लैंड उत्तर सुनहरा है।

<activity android:name=".MainActivity" 
        android:label="@string/app_name" 
        android:screenOrientation="unspecified" 
        android:launchMode="standard" 
        android:configChanges="orientation|keyboardHidden" 
        > 

उपरोक्त स्निपेट मेरा काम करता है। :)

ओह मेरा मानना ​​है कि है "अनिर्दिष्ट" क्या यह क्या सोचता है कि सबसे अच्छा है करने के लिए प्रणाली की अनुमति देता है ...

गुड लक!

+0

क्या कोई और चीज जोड़ने के लिए है? मैंने res/layout-land/main.xml जोड़ा लेकिन लैंडस्केप मोड पर दृश्य को रीफ्रेश नहीं किया। प्रदर्शित किया जा रहा दृश्य अभी भी पोर्ट्रेट के लिए लेआउट है। – exception01

+0

जोड़ने का प्रयास करें: एंड्रॉइड: स्क्रीनऑरिएंटेशन = "अनिर्दिष्ट" उस अतिरिक्त संपत्ति को एक शॉट दें और मुझे बताएं। –

1

लक्ष्य अधिक से अधिक तो 13 एपीआई के साथ Android के लिए Mono में मैंने पाया कि रेखा है जो नाम स्थान के अंदर जाना होगा लेकिन Activity class बाहर: OnConfigurationChanged() के ट्रिगर करने के लिए

[Activity (Label = "Viewer", ConfigurationChanges = ConfigChanges.Orientation|ConfigChanges.ScreenSize)] 

नेतृत्व भी प्रकट बदल रहा है, हालांकि था नहीं।

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