Support PreferenceFragmentCompat in New XSharePrefs

This commit is contained in:
2022-04-18 01:11:02 +08:00
parent 9fc69a751b
commit 1541db6427
5 changed files with 227 additions and 5 deletions

View File

@@ -16,6 +16,8 @@
[filename](public/YukiHookModulePrefs.md ':include')
[filename](public/ModulePreferenceFragment.md ':include')
[filename](public/PrefsData.md ':include')
[filename](public/ModuleApplication.md ':include')

View File

@@ -0,0 +1,81 @@
## ModulePreferenceFragment [class]
```kotlin
abstract class ModulePreferenceFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedPreferenceChangeListener
```
**变更记录**
`v1.0.78` `新增`
**功能描述**
> 这是对使用 `YukiHookAPI` Xposed 模块实现中的一个扩展功能。
此类接管了 `PreferenceFragmentCompat` 并对其实现了 Sp 存储在 Xposed 模块中的全局可读可写。
在你使用 `PreferenceFragmentCompat` 的实例中,将继承对象换成此类。
然后请将重写方法由 `onCreatePreferences` 替换为 `onCreatePreferencesInModuleApp` 即可。
**功能示例**
使用 `ModulePreferenceFragment` 创建一个 `PreferenceFragmentCompat` 对象。
> 示例如下
```kotlin
class SettingsFragment : ModulePreferenceFragment() {
override fun onCreatePreferencesInModuleApp(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.settings_preferences, rootKey)
// Your code here.
}
}
```
其余用法与 `PreferenceFragmentCompat` 保持一致。
### onCreatePreferencesInModuleApp [method]
```kotlin
abstract fun onCreatePreferencesInModuleApp(savedInstanceState: Bundle?, rootKey: String?)
```
**变更记录**
`v1.0.78` `新增`
**功能描述**
> 对接原始方法 `onCreatePreferences`。
### onSharedPreferenceChanged [method]
```kotlin
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?)
```
**变更记录**
`v1.0.78` `新增`
**功能描述**
> 实现了 `SharedPreferences.OnSharedPreferenceChangeListener` 的原生监听功能。
**功能示例**
!> 在使用 `onSharedPreferenceChanged` 时请注意保留 super 方法。
> 示例如下
```kotlin
class SettingsFragment : ModulePreferenceFragment() {
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences?, key: String?) {
super.onSharedPreferenceChanged(sharedPreferences, key)
// Your code here.
}
}
```

View File

@@ -26,6 +26,24 @@ class YukiHookModulePrefs(private val context: Context?)
!> 当你在 Xposed 模块中存取数据的时候 `context` 必须不能是空的。
若你正在使用 `PreferenceFragmentCompat`,请迁移到 `ModulePreferenceFragment` 以适配上述功能特性。
### isRunInNewXShareMode [field]
```kotlin
val isRunInNewXShareMode: Boolean
```
**变更记录**
`v1.0.78` `新增`
**功能描述**
> 获取 `YukiHookModulePrefs ` 是否正处于 EdXposed/LSPosed 的最高权限运行。
前提条件为当前 Xposed 模块已被激活。
### name [method]
```kotlin