2017-11-21 11 views
0

私の問題は、私がAppCompatPreferenceActivityから延期する自分の好みのアクティビティを持っていることです。DialogFragmentを表示する必要があります。だから私は次のようにします:AppCompatPreferenceActivityから拡張されたクラスのDialogFragment

​​3210

私はgetSupportFragmentManager()メソッドを使用することができないので、エラーが発生します。だから私の質問は、私のクラスがAppCompatPreferenceActivityから拡張されている場合、どうすればそのメソッドを使用できるかです。

代わりにgetFragmentManager()を使用しようとしましたが、どちらも動作していません。

これは私のクラスです:

public class Settings_acticity extends AppCompatPreferenceActivity { 
    private SwitchPreference banner_switch; 
    private SharedPreferences sharedPreferences; 
    private ListPreference interstial_ad; 

    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     addPreferencesFromResource(R.xml.preferences); 
     DialogFragment dialogFragment = new MyDialog(); 
     dialogFragment.show(getSupportFragmentManager(), "My dialog"); 
    } 
} 

そしてDialogFragmentクラス:助けを

public class MyDialog extends DialogFragment { 


    public MyDialog(){ 
     // Required empty public constructor 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     View vista=getActivity().getLayoutInflater().inflate(R.layout.fragment_MyDialog,null); 
     setCancelable(false); 

     builder.setView(vista).setPositiveButton(R.string.aceptar, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       //Yes Code 
      } 
     }).setNegativeButton(R.string.cancelar, new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
      //No code 
      } 
     }); 
     return builder.create(); 
    } 

} 

ありがとう!

+0

https://stackoverflow.com/questions/25887373/calling-dialogfragment-fromを-fragment-not-fragmentactivity –

+0

'エラーが表示されます.'エラーを表示します。 –

+0

リンクは私の質問を解決しませんでした。主な問題は、メソッドgetSupportFragmentManager()が必要ですが、私はAppCompatPreferenceActivityを拡張するためにそれを行うことができます。 –

答えて

1

おそらく、サポートライブラリのDialogFragmentが使用されている可能性があります。

次にあなたが持つダイアログ表示することができますandroid.support.v4.app.DialogFragment

の代わりにandroid.app.DialogFragmentをインポートすることで、オリジナルのものを使用してみてください:

MyDialog myDialog = new MyDialog(); 
myDialog.show(getFragmentManager(), "My Dialog"); 
+0

ありがとう!それは私のDialogFragmentクラスでv4をインポートしていたからです...私のメインクラスでandroid.app.DialogFragmentを使用したときにエラーが発生しました。 –

+0

ようこそ。) –

関連する問題