2015-03-25 52 views
0

我想隱藏標題欄(動作條)在風景模式下,所以我用這個代碼:隱藏標題欄/操作欄的最佳方法?

if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
     } 
     setContentView(R.layout.activity_view_entries); 

這適用於大多數設備,但它崩潰的HTC感覺XL(http://www.gsmarena.com/htc_sensation_xl-4161.php)的應用程序。

這是style.xml(我使用的是CustomActionBarTheme在清單):

<style name="CustomActionBarTheme" 
      parent="@android:style/Theme.Holo.Light.DarkActionBar"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
     <item name="android:dropDownSpinnerStyle">@style/SpinnerAppTheme</item> 
     <item name="android:editTextBackground">@drawable/apptheme_edit_text_holo_light</item> 
    </style> 

    <style name="MyActionBar" 
      parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse"> 
     <item name="android:background">@color/orange</item> 
     <item name="android:icon">@drawable/ic_action_logo</item> 
    </style> 

這是崩潰日誌:

03-24 14:51:39.129 E/AndroidRuntime(13890): FATAL EXCEPTION: main 
03-24 14:51:39.129 E/AndroidRuntime(13890): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myprojects.tib.abstimetracker/com.myprojects.tib.abstimetracker.activities.ViewEntries}: java.lang.NullPointerException 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2194) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2229) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3791) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.ActivityThread.access$700(ActivityThread.java:139) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.os.Looper.loop(Looper.java:154) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.ActivityThread.main(ActivityThread.java:4945) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at dalvik.system.NativeStart.main(Native Method) 
03-24 14:51:39.129 E/AndroidRuntime(13890): Caused by: **java.lang.NullPointerException** 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at com.android.internal.policy.impl.PhoneWindow$PanelFeatureState.onRestoreInstanceState(PhoneWindow.java:3493) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at com.android.internal.policy.impl.PhoneWindow.restorePanelState(PhoneWindow.java:1733) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1689) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.Activity.onRestoreInstanceState(Activity.java:939) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.Activity.performRestoreInstanceState(Activity.java:911) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1132) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2172) 
03-24 14:51:39.129 E/AndroidRuntime(13890):  ... 12 more 

我的問題是:誰能告訴我我應該檢查null以及標題欄和操作欄之間的區別是什麼?

回答

1

標題欄是UI的一小部分,您可以提供一些文本和顏色。你可以在很多Android 2.0應用中看到它。請參閱https://androidproblem.wordpress.com/category/title-bar/

操作欄是帶有後退導航按鈕的欄。如果可以選擇,則使用它而不是標題欄。見https://developer.android.com/guide/topics/ui/actionbar.html

檢查null值,你可以找到哪一行是給你一個空指針異常,然後您可以添加,如果檢查如下圖所示:

if (x != null){ 

//perform actual action 

} 

else { 

// Display a toast or some thing and perform a graceful exit from the application or stay in the application. 

} 

希望這有助於。差異是基於以前的答案。

+0

謝謝你,這些鏈接非常有益。我想我會嘗試ActionBar bar = getActionBar(); if(bar!= null) bar.hide(); – 2015-03-25 07:51:13