每当我尝试获取我在调用活动

时间:2018-01-21 13:23:20

标签: android nullpointerexception dialogfragment

这是一般的Dialog Fragment类,我将参数设置为bundle

public class GeneralDialogFragment extends BaseDialogFragment<GeneralDialogFragment.OnDialogFragmentClickListener> {


    public interface OnDialogFragmentClickListener {
        public void onClicked(GeneralDialogFragment dialogFragment);

        public void onCancelClicked(GeneralDialogFragment dialogFragment);

    }


    public static GeneralDialogFragment newInstance(String title, String message) {
        GeneralDialogFragment dialog = new GeneralDialogFragment();
        Bundle args = new Bundle();
        args.putString("title  ", title);
        args.putString("message", message);
        dialog.setArguments(args);
        return dialog;
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        return new AlertDialog.Builder(getActivity())
                .setTitle(getArguments().getString("title"))
                .setMessage(getArguments().getString("message"))
                .setCancelable(false)
                .create();
    }


}

这就是我在活动中调用它的方式

GeneralDialogFragment generalDialogFragment = new GeneralDialogFragment();
                    generalDialogFragment.newInstance("Test", "Its working good");
                    generalDialogFragment.show(getFragmentManager(), "dialog");

但是在setTitle(getArguments()。getString(“title”))中我在onCreateDialog上得到一个空指针异常

2 个答案:

答案 0 :(得分:1)

方法newInstance是静态的,您不需要创建一个对象来引用它。
您应该致电newInstance并获得对话框的参考:

GeneralDialogFragment generalDialogFragment = GeneralDialogFragment.newInstance("Test", "Its working good");
generalDialogFragment.show(getFragmentManager(), "dialog");

答案 1 :(得分:1)

正如Juan Cruz Soler所说,问题在于你如何使用export const Items = ({icon, title}: LinkedItemProps) => ( <div> <div className="nav-menu-link-icon"> {icon} </div> <div className="nav-menu-link-label"> {title} </div> </div> ) 。然而,还有第二个问题。

newInstance()内你有这一行:

newInstance()

然后尝试使用args.putString("title ", title); 中的这一行从Bundle参数中读取标题:

onCreateDialog()

这不会起作用,因为你的钥匙不匹配。即使它只是空格,.setTitle(getArguments().getString("title")) "title "也不是同一个字符串。删除"title"来电中"title "的空格,这将是固定的。