Tôi đang cố gắng để có được một chủ đề do người dùng chọn và cảm thấy như tôi đang rất bực bội. Xác định chủ đề trong AndroidManifest.xml
công trình như mong muốn, nhưng (như tốt nhất tôi có thể nói) không thể thay đổi dựa trên sở thích của ứng dụng:Chuyển đổi chủ đề ứng dụng rộng theo chương trình?
<application
android:theme="@style/theme_sunshine"
android:icon="@drawable/icon"
android:label="@string/app_name">
Ngoài ra, đặt nó tự động trong từng hoạt động cũng hoạt động:
someChosenTheme = PreferenceManager.getDefaultSharedPreferences(this).getString("themePreference", "theme_twilight");
setTheme(someOtherChosenTheme);
Nhưng điều đó có vẻ lộn xộn và tôi muốn đặt chủ đề cho toàn bộ ứng dụng ở một nơi. Suy nghĩ đầu tiên của tôi là lấy bối cảnh ứng dụng càng sớm càng ra mắt hoạt động chính của tôi và làm điều đó có:
getApplicationContext().setTheme(R.style.theme_dummy);
Như tốt nhất mà tôi có thể nói, this phải làm các trick, nhưng trên thực tế nó không phải làm bất cứ điều gì - các toàn bộ ứng dụng có kiểu Android mặc định. Là ở trên hợp lệ, và nếu như vậy, tôi có thể làm cái gì khác ngu ngốc?
Tôi đang làm việc ở cấp API 3 nếu vấn đề đó quan trọng. Prods đúng hướng rất nhiều đánh giá cao!
này về cơ bản những gì tôi đang làm. Nó vẫn không lý tưởng vì không có nhiều thừa kế, ví dụ: cho một ListActivity tùy chỉnh, nhưng sự bất tiện là nhỏ. Rất hữu ích hướng dẫn, mặc dù tôi đã đọc nó :) – Cheezmeister
Tôi acutally có một BaseListActivity và một cơ sở (Generic) Hoạt động trong mọi ứng dụng tôi làm. Các BaseListActivity có xử lý chung của CRUD (đọc, thêm, chỉnh sửa, xóa) được xây dựng trong, vì vậy nó rất dễ dàng để tạo ra một hoạt động danh sách mới và chỉ ghi đè lên một vài phương pháp. Tất nhiên, nếu tôi thêm MapActivity hoặc TabActivity, tôi cũng phải tạo BaseXActivity cho chúng. Đôi khi đa kế thừa là tốt hơn :) – peter3
Vì vậy, thêm setTheme cho mỗi hoạt động, trước khi "setContentView" được gọi là thực sự là giải pháp chính xác? không có một giải pháp toàn hệ thống nào? Ngoài ra, điều gì sẽ xảy ra với tất cả các hoạt động đã tồn tại? –