1

我正在尝试在我的代码中实现一个简单的对话框。但它不起作用。我搜索了所有可用的教程,包括官方开发人员指南,但没有任何效果。我从 logcat 得到的错误是我得到了一个 nullPointerException,我猜那是在 getActivity 上。有什么帮助吗?

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

public class SaveDialog extends 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

4 回答 4

14

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

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

检查这个答案

于 2012-12-02T09:38:44.343 回答
7

试试这个..作品!


((AppCompatActivity)activity).getSupportFragmentManager()
于 2017-11-24T10:57:22.417 回答
1

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

于 2014-04-28T15:07:17.930 回答
-1

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

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

它应该可以工作。祝你好运!

于 2012-12-02T12:24:11.757 回答