2012-04-23 12 views
9

के साथ गतिविधि संवाद मैं टैब के लिए एप्लिकेशन बना रहा हूं।टैब

  1. बटन पर क्लिक करने पर मैं विषय @android:style/Theme.Dialog
  2. साथ गतिविधि को दिखाने के लिए (जैसे कि एक) गतिविधि एक मैं ActionBar बनाने रहा हूँ और 4 टैब जोड़ने के अंदर कोशिश कर रहा हूँ।
  3. टैब के क्लिक पर मैं खंड बदलना चाहता हूं।

सब कुछ ठीक काम करता है जब तक मैं विषय @android:style/Theme.Dialog आवेदन नहीं कर रहा हूँ विषय को लागू करने के मैं अपवाद हो रही है के बाद: निम्न पंक्ति में

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ebuilder/com.ebuilder.views.MyTabActivity}: java.lang.NullPointerException 

:

actionBar.addTab(actionBar.newTab().setCustomView(R.layout.tab_home). 
        setTabListener(homeListener), 0); 

मैं दो प्रश्न हैं:

1. यदि मैं उन्हें लागू करता हूं तो क्या गलत हो रहा है ई संवाद?

2. क्या मेरा दृष्टिकोण सही है?

मुझे बताएं कि क्या कोई अन्य दृष्टिकोण जानता है।

Edit1: * मालसूची फ़ाइल *

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.vivek" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk android:targetSdkVersion="14"/> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".FragmentInsideFragmentTestActivity" 
      android:label="@string/app_name" 
      android:theme="@style/Theme.CustomDialog" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

res/values ​​/ style.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme.CustomDialog" parent="android:style/Theme.Dialog"> 
      <item name="android:windowNoTitle">false</item> 
      <item name="android:windowActionBar">true</item>   
    </style> 
</resources> 

EDIT2

05-03 21:42:10.580: D/AndroidRuntime(533): Shutting down VM 
05-03 21:42:10.580: W/dalvikvm(533): threadid=1: thread exiting with uncaught exception (group=0x40014760) 
05-03 21:42:10.600: E/AndroidRuntime(533): FATAL EXCEPTION: main 
05-03 21:42:10.600: E/AndroidRuntime(533): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vivek/com.vivek.FragmentInsideFragmentTestActivity}: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.access$1500(ActivityThread.java:122) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.os.Looper.loop(Looper.java:132) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.main(ActivityThread.java:4025) 
05-03 21:42:10.600: E/AndroidRuntime(533): at java.lang.reflect.Method.invokeNative(Native Method) 
05-03 21:42:10.600: E/AndroidRuntime(533): at java.lang.reflect.Method.invoke(Method.java:491) 
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
05-03 21:42:10.600: E/AndroidRuntime(533): at dalvik.system.NativeStart.main(Native Method) 
05-03 21:42:10.600: E/AndroidRuntime(533): Caused by: java.lang.IllegalStateException: ActionBarImpl can only be used with a compatible window decor layout 
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.app.ActionBarImpl.init(ActionBarImpl.java:214) 
05-03 21:42:10.600: E/AndroidRuntime(533): at com.android.internal.app.ActionBarImpl.<init>(ActionBarImpl.java:192) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.Activity.initActionBar(Activity.java:1767) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.Activity.setContentView(Activity.java:1781) 
05-03 21:42:10.600: E/AndroidRuntime(533): at com.vivek.FragmentInsideFragmentTestActivity.onCreate(FragmentInsideFragmentTestActivity.java:47) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
05-03 21:42:10.600: E/AndroidRuntime(533): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712) 
05-03 21:42:10.600: E/AndroidRuntime(533): ... 11 more 
+0

मैं एक बड़े हिस्से में इसे करने के बजाय काटने में टैब बनाने की अनुशंसा करता हूं। फिर आप स्पष्ट रूप से पिन कर सकते हैं जो नलपोइंटर देता है। हल करने के लिए Nullpointer काफी सरल होना चाहिए। – Warpzit

+1

वास्तव में कोई कार्रवाई नहीं है अगर मैं विषय 'थीम। डायलॉग' लागू करता हूं तो अपवाद है। – Vivek

+0

मेरा अनुमान है (इसका अनुमान है) कि संवाद विषय में शीर्षक नहीं है और चूंकि एक्शनबार गहराई से एक टाइटलबार है, इसका मतलब है कि इसलिए कोई एक्शनबार नहीं है। क्या एक अलग विषय का उपयोग करना संभव है? – Warpzit

उत्तर

0

आप एक संवाद बार के लिए आवश्यक संवाद के गुणों को ओवरराइड करके एक कस्टम संवाद थीम बना सकते हैं .. इसके अलावा android:windowActionBar संपत्ति भी जोड़ें।

<style name="Theme.CustomDialog" parent="android:Theme.Holo.Dialog"> 
    <item name="android:windowNoTitle">false</item> 
    <item name="android:windowActionBar">true</item> 
    ... 
</style> 
+0

यदि मैं इस विषय को 'java.lang.IllegalStateException प्राप्त कर रहा हूं: ActionBarImpl का उपयोग केवल एक संगत विंडो सजावट लेआउट 'के साथ किया जा सकता है' यह त्रुटि – Vivek

+0

यह काम करना चाहिए। क्या आप वाकई स्टाइल टैग में 'parent =" android: style/Theme.Dialog "विशेषता डाल चुके हैं? 'windowNoTitle' आइटम के बिना प्रयास करें .. – Ronnie

+0

अरे 'थीम.dialog' को' एंड्रॉइड में बदलें: Theme.Holo.Dialog' समतुल्य। हनीकॉम या नए को लक्षित करने वाले अनुप्रयोगों के लिए यह डिफ़ॉल्ट संवाद विषय है। 'Theme.dialog' को टूटा हुआ बताया गया है ... – Ronnie

1

मैं यहां एक ही मुद्दे के साथ संघर्ष कर रहा हूं और अब तक दो अलग-अलग दृष्टिकोण प्राप्त कर रहा हूं।

पहला वर्णन here है जिसका मैंने उपयोग किया था।

this उत्तर भी था जो पहले जैसा ही दिखता है।

बड़ी समस्या यह प्रतीत होती है कि एक्शनबार केवल पूर्णस्क्रीन लेआउट पर उपयोग किया जाना चाहिए, इसलिए डायलॉग प्रकार लेआउट को लागू करने का प्रयास करने वाला कोई भी अपवाद अपवाद का कारण बनता है। इसलिए, इस मुद्दे के आसपास काम करने के लिए, दोनों एक निश्चित मूल्य के साथ this.getWindow().setAttributes पर चौड़ाई स्थापित कर रहे हैं।

यह निष्कर्ष था कि मैं आया था, उम्मीद है कि यह किसी और की तलाश में मदद करेगा, क्योंकि यह एक बहुत पुराना सवाल है।

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