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

时间:2020-10-21 11:25:18

标签: android androidx preference

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

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的地方。

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

0 个答案:

没有答案
相关问题