2015/02/01

PreferenceFragmentでDialogFragmentを使う

始めはDialogFragmentを別ファイルにしたが、showのところでエラーがでてしまいうまくいかなかっので PreferenceFragmentクラスの中にDialogFragmentクラスを書いたらうまくいった。

DialogFragmentはstaticにする必要がある。

public class SampleFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener {
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  addPreferencesFromResource(R.xml.pref);


  PreferenceScreen pref1 = (PreferenceScreen) findPreference("prefkey");
  pref1.setOnPreferenceClickListener(new OnPreferenceClickListener() {
   @Override
   public boolean onPreferenceClick(Preference arg0) {  

    //ダイアログを表示
    DialogFragment fragment = new SampleDialogFragment();
    Bundle bundle = new Bundle();
    bundle.putInt("type", 0);
    fragment.setArguments(bundle);
    FragmentTransaction ft = getFragmentManager().beginTransaction();      
    fragment.show(ft, "dialog");

    return false;
   }
  });

 }


 public static class SampleDialogFragment extends DialogFragment {

  public static DBdialogFragment newInstance(String title, String message) {
   SampleDialogFragmentt frag = new SampleDialogFragment();
   Bundle bundle = new Bundle();
   bundle.putInt("type", 0);
   frag.setArguments(bundle);
   return frag;
  }

  @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
   final int type = getArguments().getInt("type");
   //処理
  }
 }
}



0 件のコメント:

コメントを投稿