我目前正在建立一个xml文件PreferenceScreen
。它的一个子元素,更确切地说Preference
元素,有一个叫android:setFragment在下面的描述属性:喜欢自定义片段
设置单击此偏好时显示片段的类名。
所以我将自己定制的片断在偏好的XML文件:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:title = "test"
android:fragment="com.test.bla.SomeTestFragment"/>
</PreferenceScreen>
这是我如何定义我的定制的片断(这实际上是扩展了DialogFragment
):
public class SomeTestFragment extends DialogFragment
{
public static final String FRAGMENT_TAG = SomeTestFragment.class.getName();
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
Dialog dialog = new Dialog(getContext());
dialog.setTitle("Delete User");
FragmentDeleteUserBinding binding = FragmentDeleteUserBinding.inflate(LayoutInflater.from(getContext()));
binding.setFragment(this);
dialog.setContentView(binding.getRoot());
return dialog;
}
public void onClickDeleteCredential()
{
DeleteCredentialFragment.deleteCredential(getChildFragmentManager());
}
public void onClickClose()
{
dismiss();
}
}
但是,当我点击该首选项没有任何反应,自定义片段不显示。我在这里想念什么?
有人可能会问我为什么强制我的自定义DialogFragment
。这只是因为我有权访问getChildFragmentManager
方法,如果我的自定义片段将从DialogPreference
延伸,我无法实现同样的效果。