【问题标题】:DialogFragment in Class that extends from AppCompatPreferenceActivity从 AppCompatPreferenceActivity 扩展的类中的 DialogFragment
【发布时间】:2017-11-21 09:46:04
【问题描述】:

我的问题是我的偏好活动从AppCompatPreferenceActivity 延伸,我需要显示DialogFragment。因此,当我执行以下操作时:

DialogFragmente dialogFragment= new MyDialogFragmentClass()
DialogFragment.show(getSupportFragmentManager(),"My Dialog")

我收到一个错误,因为我无法使用 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();
    }

}

感谢您的帮助!

【问题讨论】:

  • I get an error 显示错误。
  • 链接没有解决我的问题。主要问题是我需要 getSupportFragmentManager() 方法,但由于扩展了 AppCompatPreferenceActivity,我可以做到。

标签: java android android-preferences android-dialogfragment


【解决方案1】:

这可能是因为您使用了支持库中的DialogFragment。

通过导入 android.app.DialogFragment 而不是 android.support.v4.app.DialogFragment 尝试使用原始版本

然后你可以显示对话框:

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

【讨论】:

  • 谢谢!这是因为在我的 DialogFragment 类中我正在导入 v4...所以当我在 Main 类中使用 android.app.DialogFragment 时出现错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2023-04-07
  • 2013-04-19
  • 2017-03-11
  • 1970-01-01
相关资源
最近更新 更多