【问题标题】:Android - Dialog getSupportFragmentManager undefinedAndroid - 对话框 getSupportFragmentManager 未定义
【发布时间】:2012-12-02 07:06:18
【问题描述】:

我正在尝试在我的代码中实现一个简单的对话框。但它不起作用。我搜索了所有可用的教程,包括官方开发人员指南,但没有任何效果。我从 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,但它说它是未定义的。

【问题讨论】:

  • 应用崩溃时别忘了分享Logcat
  • 我猜问题出在getActivity()。它正在返回null
  • 在Activity中,你应该只使用getSupportFragmentManager(),因为它是Activity的方法。
  • 是的,问题是 getActivity 返回 null。我尝试使用 Context 并从 Main 活动中传递它,但问题仍然存在。

标签: android dialog alert android-dialogfragment


【解决方案1】:

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

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

查看this answer

【讨论】:

  • 如何从 Fragment 类调用 getSupportFragmentManager()(扩展 Fragment)?
  • getActivity().getSupportFragmentManager() 如果我没记错的话
【解决方案2】:

试试这个..效果!!


((AppCompatActivity)activity).getSupportFragmentManager()

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-03
        • 1970-01-01
        相关资源
        最近更新 更多