gpt4 book ai didi

java - 单击时更改 EditTextPreference 的行为

转载 作者:行者123 更新时间:2023-12-02 05:03:45 25 4
gpt4 key购买 nike

我正在尝试更改 EditTextPreference 的行为以满足我的需要。它保存了我使用 Intent 设置的路径。我的问题是它还打开他自己的 fragment 来修改他的文本。我最终得到了 2 个连续的窗口:我想要的 ACTION_OPEN_DOCUMENT_TREE 和在框中写入简单字符串的默认窗口。

这里是SettingFragment.java:

@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.root_preferences, rootKey);

Preference editTextPreference = getPreferenceManager().findPreference("path");
if (editTextPreference != null) {
editTextPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {

@Override
public boolean onPreferenceClick(Preference arg0) {
Intent secondActivity = new Intent(ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(secondActivity, RQS_OPEN_DOCUMENT_TREE);

return true;
}
});
}
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK && requestCode == RQS_OPEN_DOCUMENT_TREE) {
Uri treeUri = data.getData();
System.out.println(treeUri.toString());
String path = FileUtil.getFullPathFromTreeUri(treeUri, getContext());

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
sharedPreferences.edit().putString("path",path).apply();
}
}

这里是关联的 xml:

<androidx.preference.PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory>
<EditTextPreference
app:key="path"
app:title="@string/path_title"
app:useSimpleSummaryProvider="true"
/>
</PreferenceCategory>

我尝试更改 Preference 的 EditTextPreference 但该值将不再显示。我发现 useSimpleSummaryProvider 只能应用于 ListPreference 和 EditTextPreference。我也尝试禁用它,但它不再触发 onPreferenceClick()。有没有办法只执行 onPreferenceClick 而不是默认 fragment 或更好的方法来处理这个问题?

最佳答案

试试这个

@Override
public boolean setOnPreferenceClickListener(Preference preference) {
if(preference.getKey().equals("path")){
Intent secondActivity = new Intent(ACTION_OPEN_DOCUMENT_TREE);
startActivityForResult(secondActivity, RQS_OPEN_DOCUMENT_TREE);
return true;
}
return false;
}

关于java - 单击时更改 EditTextPreference 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56369101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com