6

मैं अपने कस्टम व्यू को एक्शन बार में जोड़ने की कोशिश कर रहा हूं।एंड्रॉइड एक्शन बार में कस्टम व्यू जोड़ने में असमर्थ, क्यों?

final View addView=getLayoutInflater().inflate(R.layout.home_actionbar_buttons, null); 
     getActionBar().setCustomView(addView); 

मेरी एक्सएमएल,

<LinearLayout android:id="@+id/linearLayout1" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" android:layout_width="match_parent"> 
    <Button android:text="Refresh" android:layout_height="wrap_content" 
     android:id="@+id/btn_refresh" android:layout_width="wrap_content"></Button> 
</LinearLayout 

लेकिन मैं nullpointer अपवाद मिलता है। जब मैं डीबग करता हूं, addView ऑब्जेक्ट पॉप्युलेट हो जाता है और यह शून्य नहीं होता है। फुटेज के दौरान ViewGroupRoot अनिवार्य है?

संपादित करें 1: Logcat

09-30 12:50:11.625: DEBUG/PackageManager(74): Activities: com.example.actionbar.MainActivity 
09-30 12:50:11.645: INFO/ActivityManager(74): Force stopping package com.example.actionbar uid=10047 
09-30 12:50:11.825: INFO/installd(34): move /data/dalvik-cache/[email protected]@[email protected] -> /data/dalvik-cache/[email protected]@[email protected] 
09-30 12:50:11.825: DEBUG/PackageManager(74): New package installed in /data/app/com.example.actionbar-1.apk 
09-30 12:50:12.215: DEBUG/PackageManager(74): generateServicesMap(android.accounts.AccountAuthenticator): 3 services unchanged 
09-30 12:50:12.306: DEBUG/PackageManager(74): generateServicesMap(android.content.SyncAdapter): 5 services unchanged 
09-30 12:50:12.475: WARN/RecognitionManagerService(74): no available voice recognition services found 
09-30 12:50:12.605: DEBUG/dalvikvm(143): GC_EXPLICIT freed 2K, 17% free 14616K/17415K, paused 5ms+26ms 
09-30 12:50:12.985: INFO/AccountTypeManager(202): Loaded meta-data for 1 account types, 0 accounts in 14ms 
09-30 12:50:13.555: DEBUG/dalvikvm(143): GC_FOR_ALLOC freed 1125K, 17% free 14564K/17415K, paused 121ms 
09-30 12:50:14.435: DEBUG/dalvikvm(143): GC_FOR_ALLOC freed 4109K, 33% free 11749K/17415K, paused 155ms 
09-30 12:50:15.254: DEBUG/dalvikvm(143): GC_CONCURRENT freed 1055K, 29% free 12509K/17415K, paused 5ms+10ms 
09-30 12:50:15.894: DEBUG/dalvikvm(143): GC_CONCURRENT freed 1109K, 24% free 13406K/17415K, paused 6ms+6ms 
09-30 12:50:16.404: DEBUG/dalvikvm(143): GC_CONCURRENT freed 1084K, 18% free 14348K/17415K, paused 5ms+6ms 
09-30 12:50:16.924: DEBUG/dalvikvm(74): GC_EXPLICIT freed 752K, 47% free 14474K/26951K, paused 49ms+21ms 
09-30 12:50:16.944: DEBUG/AndroidRuntime(1196): Shutting down VM 
09-30 12:50:16.994: INFO/AndroidRuntime(1196): NOTE: attach of thread 'Binder Thread #3' failed 
09-30 12:50:17.044: DEBUG/dalvikvm(1196): GC_CONCURRENT freed 111K, 84% free 331K/2048K, paused 4ms+1ms 
09-30 12:50:17.044: DEBUG/jdwp(1196): Got wake-up signal, bailing out of select 
09-30 12:50:17.044: DEBUG/dalvikvm(1196): Debugger has detached; object registry had 1 entries 
09-30 12:50:17.974: DEBUG/AndroidRuntime(1210): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<< 
09-30 12:50:17.974: DEBUG/AndroidRuntime(1210): CheckJNI is ON 
09-30 12:50:19.174: DEBUG/AndroidRuntime(1210): Calling main entry com.android.commands.am.Am 
09-30 12:50:19.234: INFO/ActivityManager(74): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.actionbar/.MainActivity } from pid 1210 
09-30 12:50:19.264: WARN/WindowManager(74): Failure taking screenshot for (216x135) to layer 21005 
09-30 12:50:19.315: DEBUG/AndroidRuntime(1210): Shutting down VM 
09-30 12:50:19.384: INFO/AndroidRuntime(1210): NOTE: attach of thread 'Binder Thread #3' failed 
09-30 12:50:19.384: INFO/ActivityManager(74): Start proc com.example.actionbar for activity com.example.actionbar/.MainActivity: pid=1218 uid=10047 gids={} 
09-30 12:50:19.484: DEBUG/dalvikvm(1210): GC_CONCURRENT freed 112K, 83% free 358K/2048K, paused 1ms+1ms 
09-30 12:50:19.484: DEBUG/jdwp(1210): Got wake-up signal, bailing out of select 
09-30 12:50:19.484: DEBUG/dalvikvm(1210): Debugger has detached; object registry had 1 entries 
09-30 12:50:22.095: DEBUG/AndroidRuntime(1218): Shutting down VM 
09-30 12:50:22.095: WARN/dalvikvm(1218): threadid=1: thread exiting with uncaught exception (group=0x40014760) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218): FATAL EXCEPTION: main 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.actionbar/com.example.actionbar.MainActivity}: java.lang.NullPointerException 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1752) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:993) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.os.Looper.loop(Looper.java:126) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.app.ActivityThread.main(ActivityThread.java:3997) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at java.lang.reflect.Method.invoke(Method.java:491) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at dalvik.system.NativeStart.main(Native Method) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218): Caused by: java.lang.NullPointerException 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at com.example.actionbar.MainActivity.onCreate(MainActivity.java:16) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700) 
09-30 12:50:22.134: ERROR/AndroidRuntime(1218):  ... 11 more 
09-30 12:50:24.615: DEBUG/dalvikvm(406): GC_EXPLICIT freed 8K, 6% free 6199K/6531K, paused 4ms+382ms 
09-30 12:50:26.825: DEBUG/dalvikvm(143): GC_EXPLICIT freed 991K, 16% free 14644K/17415K, paused 977ms+245ms 
09-30 12:50:28.545: WARN/ActivityManager(74): Force finishing activity com.example.actionbar/.MainActivity 
09-30 12:50:28.545: WARN/WindowManager(74): Failure taking screenshot for (216x135) to layer 21010 
09-30 12:50:29.178: WARN/ActivityManager(74): Activity pause timeout for ActivityRecord{40a10fe0 com.example.actionbar/.MainActivity} 
09-30 12:50:29.287: WARN/ActivityManager(74): Launch timeout has expired, giving up wake lock! 
09-30 12:50:30.925: WARN/ActivityManager(74): Activity idle timeout for ActivityRecord{40a10fe0 com.example.actionbar/.MainActivity} 
09-30 12:50:33.144: INFO/Process(1218): Sending signal. PID: 1218 SIG: 9 
09-30 12:50:33.344: INFO/ActivityManager(74): Process com.example.actionbar (pid 1218) has died. 
09-30 12:50:33.554: WARN/InputManagerService(74): Window already focused, ignoring focus gain of: [email protected] 
09-30 12:50:33.874: INFO/Process(1179): Sending signal. PID: 1179 SIG: 9 
09-30 12:50:36.494: DEBUG/dalvikvm(420): GC_EXPLICIT freed 10K, 6% free 6195K/6531K, paused 7ms+5ms 
09-30 12:50:40.959: WARN/ActivityManager(74): Activity destroy timeout for ActivityRecord{40a10fe0 com.example.actionbar/.MainActivity} 
09-30 12:50:41.595: DEBUG/dalvikvm(202): GC_EXPLICIT freed 174K, 5% free 6733K/7047K, paused 10ms+4ms 
09-30 12:50:46.618: DEBUG/dalvikvm(345): GC_EXPLICIT freed 17K, 5% free 6277K/6599K, paused 7ms+9ms 

संपादित करें 2:

जोड़ा गया setCustomView(R.layout.mylayout.xml); ActionBar

अभी भी

क्रिया बार में बटन नहीं देख पा में customView में जोड़ने से पहले

+0

शामिल करें logcat –

+0

मैं logcat – Ads

+0

खेद लोग मैं है.पर पहले setContentView() चूक गए अभी भी मैं बटन है कि मैं ActionBar – Ads

उत्तर

23

मुझे लगता है कि आपकी समस्या सबसे अधिक संभावना है कि getActionBar() कॉल विफल हो एक्शन बार के कारण आपकी गतिविधि में शामिल नहीं किया जा रहा है। निम्न विशेषता जोड़ने का प्रयास करें:

android:targetSdkVersion="11" 

आपके मैनिफेस्ट में 'उपयोग-एसडीके' नोड में। एक हनीकोम्ब एसडीके को लक्षित करके, आपको अपनी गतिविधि में एक एक्शन बार शामिल होगा। आप होलो थीम में से किसी एक को अपने एप्लिकेशन की थीम सेट करके इसे भी प्राप्त कर सकते हैं। जैसे

android:theme="@android:style/Theme.Holo.Light" 

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

आपको किसी कस्टम दृश्य के लिए DISPLAY_SHOW_CUSTOM पर एक्शन बार पर प्रदर्शन विकल्प सेट करने की भी आवश्यकता है। कस्टम दृश्य सेट करने के बाद इस लाइन जोड़ने का प्रयास करें: मदद करता है कि http://developer.android.com/reference/android/app/ActionBar.html

आशा:

getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

के तहत के लिए और अधिक विस्तार के लिए 'कार्रवाई बार का उपयोग' यह पेज देखें!

+0

में रखा मैं इस को शामिल किया है देखने के लिए सक्षम नहीं कर रहा हूँ जोड़ लिया है, मैं देख सकता हूँ एक्शन बार में मेनू और लोगो। लेकिन मेरे कस्टम बटन को देखने में सक्षम नहीं – Ads

+0

आह ठीक है - मुझे लगता है कि आपको एक्शन बार पर डिस्प्ले विकल्प सेट करने की आवश्यकता है - मैंने यह भी जवाब देने के लिए अपना उत्तर संपादित किया है – kingraam

+0

मैंने getActionBar() .setDisplayShowCustomEnabled (सही); – Ads

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