1

我希望我的程序在每個活動中都有相同的背景顏色。所以我把這一行代碼放在每個layout.xml文件的每個主要佈局中。android改變背景顏色太慢

android:background="@color/background" 

到目前爲止好,它的工作原理和看起來不錯。然而,最近我開始注意到,當我打電話給一個新的活動時,它首先有一個白色背景,立即變爲背景顏色。但是,在我眼裏總是有這麼一個白色,很短的時間,這真的很煩人。

有誰知道如何避免這個問題?我希望我的活動能夠正常使用新的背景顏色。

編輯: 那麼我使用的每一個活動都有相同的背景。這就是我如何開始新的活動:

startActivity(new Intent(getActivity(), ActivityAlbumContent.class)); 

到目前爲止,我只有這一個和MainActivity但它也是在應用程序啓動的MainActivity具有第一白色背景。我現在只能假設我將在後面創建的活動將會有同樣的問題。

這是我的styles.xml裏面。

<style name="CustomTheme" parent="android:Theme"> 
    <item name="android:windowBackground">@color/background</item> 
</style> 

windowBackground屬性以某種方式不存在。我在清單文件中將此主題設置爲我的應用程序,但隨後崩潰。

06-30 20:43:49.048: E/AndroidRuntime(15411): FATAL EXCEPTION: main 
06-30 20:43:49.048: E/AndroidRuntime(15411): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.davlog.mplayer/com.davlog.mplayer.MainActivity}: java.lang.NullPointerException 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.access$700(ActivityThread.java:154) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.os.Handler.dispatchMessage(Handler.java:99) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.os.Looper.loop(Looper.java:137) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.main(ActivityThread.java:5306) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at java.lang.reflect.Method.invokeNative(Native Method) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at java.lang.reflect.Method.invoke(Method.java:511) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at dalvik.system.NativeStart.main(Native Method) 
06-30 20:43:49.048: E/AndroidRuntime(15411): Caused by: java.lang.NullPointerException 
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.davlog.mplayer.MainActivity.onCreate(MainActivity.java:29) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.Activity.performCreate(Activity.java:5255) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097) 
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213) 
06-30 20:43:49.048: E/AndroidRuntime(15411): ... 11 more 
+0

你打電話給新的活動?請顯示一些代碼。 – joao2fast4u

+0

@ joao2fast4u我發佈了一些編輯。但是,對於我的新活動的調用沒有什麼特別之處。 – Davlog

回答

2

可以使用android:windowBackground屬性的自定義主題設置一個活動的背景顏色,活動加載時包括。

例如,定義這種風格:

<style name="Theme.MyApp" parent="android:Theme"> 
    <item name="android:windowBackground">@color/my_app_color</item> 
</style> 

然後在你的清單中您所選擇的主題,像這樣:

<application 
     android:theme="@style/Theme.MyApp"> 

    <!- ... -> 

</application> 

這樣就無需設置android:background爲每個佈局和將在活動加載時顯示適當的顏色。

請注意,如果您支持API 14以上的任何設備,則可能需要擁有從Holo主題繼承的此主題的values-14/styles.xml副本。如果你只支持14以上的設備,那麼你只需要一個從Holo主題繼承的主題。

+0

eclipse沒有顯示我的windowBackground屬性,當我設置它,我的應用程序崩潰與nullpointerexception – Davlog

+0

您是否將它設置爲一個主題,或試圖將其設置在您的佈局的XML視圖? 'NullPointerException'聽起來完全不相關,但是你的logcat應該能夠提供更多關於它來自哪裏的指導。 –

+0

等一下,我發佈了我的樣式代碼 – Davlog