私は現在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
から拡張されるならば、私は同じことを達成できません。