Android - Dialog getSupportFragmentManager未定义

时间:2012-12-02 07:06:19

标签: android dialog alert android-dialogfragment

我正在尝试在我的代码中实现一个简单的Dialog。但它不起作用。我搜索了每个可用的教程,包括官方的开发者指南,但没有任何作用。我从logcat得到的错误是我得到一个nullPointerException,我猜这是在getActivity上。有帮助吗?

这就是我所拥有的:这是我的自定义对话类。

public class SaveDialog扩展了DialogFragment {

public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setTitle("Save Password");
    builder.setView(getContentView());
    Dialog dialog = builder.create();
    dialog.show();
    return dialog;
}

private View getContentView() {
    LayoutInflater inflater = getActivity().getLayoutInflater();

    return inflater.inflate(R.layout.dialog, null);
}
}

这是我发生onclick的主要活动

private void savePassword() {


    SaveDialog savePasswordDialog = new SaveDialog();
    savePasswordDialog.show(savePasswordDialog.getSupportFragmentManager(), "tag");

    }

每次启动onClick时,应用程序崩溃。最重要的是,目前我正在尝试使用getSupportFragmentManager,但它说它未定义。

4 个答案:

答案 0 :(得分:14)

您应该使用getSupportFragmentManager(),它仅在FragmentActivity中可用。

您应该将活动更改为片段。

检查this answer

答案 1 :(得分:3)

试试这个......工作!!

((AppCompatActivity)activity).getSupportFragmentManager()

答案 2 :(得分:1)

只需从android.support.v4.app.DialogFragment或android.support.v4.app.Fragment调用getFragmentManager()即可。它将返回一个android.support.v4.app.FragmentManager(这是支持FragmentManager)

答案 3 :(得分:-1)

您不必在onCreateDialog()中手动显示对话框,只需返回它就足以让DialogFragment在调用savePassword()时发挥其魔力(并显示对话框)。

所以从onCreateDialog中删除这一行: dialog.show();

它应该有效。祝你好运!