What is the way to set the theme value on Android through a Native Module?

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở
Đáp án đúng gồm hai ý: "Call setTheme with an integer representing the theme." và "Use SharedPreferences.edit().putString("theme", value) and commit the changes.". Trên Android, theme là một style khai báo trong tài nguyên, và Activity.setTheme nhận một số nguyên chính là ID tài nguyên style dạng R.style.TenTheme; vì vậy native module (mô-đun gốc viết bằng Java hoặc Kotlin, phơi ra cho JavaScript qua phương thức gắn @ReactMethod) lấy Activity hiện tại rồi gọi setTheme với số nguyên đó, thường kèm recreate để giao diện vẽ lại. Còn để nhớ lựa chọn của người dùng qua các lần mở app, module lưu giá trị theme vào SharedPreferences (kho khoá–giá trị nhỏ của Android) bằng edit().putString rồi commit để ghi xuống. "Use ReactContext.getTheme() and update it directly." sai vì ReactContext không cung cấp getTheme để sửa theme trực tiếp; theme gắn với Activity chứ không phải với ngữ cảnh của cầu nối React. "Call setTheme and pass in a String." không khớp chữ ký của Activity.setTheme vốn chỉ nhận ID nguyên; nó chỉ đúng trong trường hợp bạn tự viết một hàm @ReactMethod nhận chuỗi từ JavaScript rồi tự quy chuỗi đó về ID style trước khi gọi setTheme, tức cuối cùng vẫn phải truyền số nguyên.

Cùng chương 1

Xuất hiện trong 1 bộ đề