6

Sto tentando di aggiungere la mia visualizzazione personalizzata alla barra delle azioni.Impossibile aggiungere una visualizzazione personalizzata alla barra delle azioni Android, perché?

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

mia XML,

<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 

ma ottengo un'eccezione nullpointer. quando eseguo il debug, l'oggetto addView viene popolato e non è nullo. è ViewGroupRoot obbligatorio durante il gonfiaggio?

EDIT 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 

EDIT 2:

Aggiunto setCustomView(R.layout.mylayout.xml); prima di aggiungere al CustomView in ActionBar

ancora non in grado di vedere il pulsante nella barra delle azioni

+0

Si prega di includere logcat –

+0

ho aggiunto logcat – Ads

+0

scusate ragazzi ho perso setContentView() prima this.But ancora non sono in grado di vedere il pulsante che ho messo nel ActionBar – Ads

risposta

23

Penso che il tuo problema sia più probabile che la chiamata getActionBar() fallisca perché la barra delle azioni non è inclusa nella tua attività. Prova ad aggiungere il seguente attributo:

android:targetSdkVersion="11" 

al nodo 'uses-sdk' nel file manifest. Scegliendo come target un SDK a nido d'ape, riceverai una barra delle azioni inclusa nella tua attività. Puoi anche ottenere questo risultato impostando il tema della tua applicazione su uno dei temi di Holo. per esempio.

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

Se si include l'attributo nel nodo dell'applicazione del manifesto, si dovrebbe anche ottenere una barra delle operazioni con cui giocare.

È inoltre necessario impostare le opzioni di visualizzazione sulla barra delle azioni su DISPLAY_SHOW_CUSTOM per visualizzare qualsiasi visualizzazione personalizzata. Prova ad aggiungere questa linea dopo aver impostato la visualizzazione personalizzata:

getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 

Guarda cosa per meno di 'Uso dell'azione Bar' per maggiori dettagli: http://developer.android.com/reference/android/app/ActionBar.html

Speranza che aiuta!

+0

ho incluso questo, io sono in grado di vedere menu e logo in action bar.ma non riesco a vedere il mio pulsante personalizzato – Ads

+0

Ah OK - Penso che sia necessario impostare le opzioni di visualizzazione sulla barra delle azioni - Ho modificato la mia risposta per includere anche questo – kingraam

+0

ho aggiunto getActionBar() .setDisplayShowCustomEnabled (true); – Ads