如何解决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 举报,一经查实,本站将立刻删除。