Androidx首选项setEnabled无法正常工作?

问题描述

我试图通过以下方式禁用首选项(我非常想在这里设置所有可能的设置):

SettingsActivity.SettingsFragment pfc = SettingsActivity.settings;
if (pfc != null) {
    Preference qtl = pfc.findPreference("use_tts");
    if (qtl != null) {
        qtl.setShouldDisableView(true);
        qtl.setSelectable(false);
        qtl.setEnabled(false);
        qtl.setVisible(false);
        qtl.setPersistent(true);
    }
}

在此之后,我检查了(在调试中)qtl.mEnabled,它为false。但是,在打开“首选项”选项卡后,无论如何都会启用它。我的SettingsActivity.java:

import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;

import androidx.appcompat.app.AppCompatActivity;
import androidx.preference.PreferenceFragmentCompat;
    
public class SettingsActivity extends AppCompatActivity {

    public static SettingsFragment settings = null;

    public static <T extends BaseActivity> void start(T activity) {
        activity.startActivity(new Intent(activity,SettingsActivity.class));
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        if (settings == null) settings = new SettingsFragment();
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportFragmentManager()
                .beginTransaction()
                .replace(android.R.id.content,settings)
                .commit();
    }
    
    public static class SettingsFragment extends PreferenceFragmentCompat {
        @Override
        public void onCreatePreferences(final Bundle savedInstanceState,String rootKey) {
            setPreferencesFromResource(R.xml.preferences,rootKey);
        }
    }
}

activity_settings.xml:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:id="@+id/activity_settings" >
</FrameLayout>

我在调试中检查到,偏好设置在onCreate中保持禁用状态。但是之后,它就启用了。

实际上,我在Preference.java中发现,mEnabled是这样设置的:

mEnabled = TypedArrayUtils.getBoolean(a,R.styleable.Preference_enabled,R.styleable.Preference_android_enabled,true);

所以我想这就是将其设置为true的地方。

有人告诉我我在做什么错了吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...