5

Android Developer documentation का वर्णन करता है एक Activity के लिए एक Dialog विषय स्थापित करने के लिए कैसे:AndroidManifest.xml में अपनी थीम को सेट करने वाले संवाद के रूप में ActionBarCompat गतिविधि को कैसे प्रदर्शित करें?

युक्ति: आप एक कस्टम संवाद चाहते हैं, आप के बजाय बजाय Dialog एपीआई का उपयोग करने का एक संवाद के रूप में एक Activity प्रदर्शित कर सकते हैं। सीधे शब्दों में एक गतिविधि बना सकते हैं और <activity> प्रकट तत्व में Theme.Holo.Dialog करने के लिए अपने विषय सेट:

<activity android:theme="@android:style/Theme.Holo.Dialog" >

यह है कि। गतिविधि अब पूर्णस्क्रीन की बजाय एक संवाद विंडो में प्रदर्शित होती है।

मैं इसे ActionBarCompat का उपयोग करने वाले एप्लिकेशन के लिए ऐसा करने का प्रयास कर रहा हूं। मैं इस तरह के रूप ... विभिन्न विषयों कोशिश कर रहे हैं

android:theme="@android:style/Theme.Dialog" 
android:theme="@style/Theme.AppCompat.Base.CompactMenu.Dialog" 
android:theme="@style/Theme.AppCompat.CompactMenu.Dialog" 

हालांकि उनमें से कोई भी के बाद से मैं एक ही त्रुटि संदेश के साथ खत्म हो काम करने के लिए लगता है:

java.lang.IllegalStateException: आप की जरूरत है इस गतिविधि के साथ एक थीम। AppCompat विषय (या वंशज) का उपयोग करें।

उत्तर

8

बस एक ही समस्या दूसरे दिन ActionBarSherlock 4.2.0 (जो एक विशेष संवाद, बाद के संस्करणों में हटा दिया कारण यह वास्तव में ActionBar के साथ क्या करना ज्यादा नहीं है ... विषय है) से परिवर्तित मारा।

मैं हालांकि यह से प्रेरित और पुराने एपीआई के लिए एक थीम के साथ आया था:

res\values\styles.xml 
<style name="AppTheme.Dialog" parent="android:Theme.Light"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowBackground">@drawable/dialog_full_holo_light</item> 
    <item name="android:maxWidth">600dp</item> 
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
</style> 

बाद में एपीआई के लिए असली Holo संवाद विषय का उपयोग करते समय:

res\values-v11\styles.xml 
<style name="AppTheme.Dialog" parent="android:Theme.Holo.Light.Dialog"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowCloseOnTouchOutside">true</item> 
</style> 

अंत में मैं एक का उपयोग करने के लिए किया था आपके द्वारा प्राप्त अपवाद से बचने के लिए सादा गतिविधि, साथ ही एक और जहां एक्शनबर्वीव इसकी चौड़ाई/ऊंचाई की जांच कर रहा है।

तुम मेरे ब्लॉग पोस्ट पढ़ सकते हैं, अंत में पूर्ण स्रोत कोड के लिंक के साथ: http://dandar3.blogspot.com/2013/12/actionbarcompat-dialog-activity.html

+0

@ drawable/dialog_full_holo_light नाबालिग एसडीके लिए उपलब्ध नहीं है की तुलना में 11. हम परियोजना के लिए इसे जोड़ने चाहिए (जहां फिर इसे खोजने के लिए?) या इसे एक्सएमएल से हटा दें? – Giorgio

+1

@ जॉर्जियो, मेरे ब्लॉगपोस्ट के अंत में संसाधन देखें, इसे Google Code में एक पूर्ण स्रोत प्रोजेक्ट के साथ-साथ एंड्रॉइड संसाधनों के लिंक भी मिलते हैं - हां, आपको उन्हें अपनी प्रोजेक्ट में जोड़ना होगा, और यहां लिंक है - https: //github.com/android/platform_frameworks_base/tree/master/core/res/res –

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

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