首页 > 解决方案 > 不能为参数 pathString 我孩子传递 null

问题描述

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        RecyclerView storyRecycler = (RecyclerView) inflater.inflate(R.layout.fragment_story,container,false);
        Bundle bundle = getArguments();
        if(bundle != null) {
            language = (String) bundle.getString("lang");
        }
        Query query = FirebaseDatabase.getInstance()
                    .getReference()
                    .child(language);

   }

错误:

java.lang.NullPointerException: Can't pass null for argument 'pathString' in child()
        at com.google.firebase.database.DatabaseReference.child(com.google.firebase:firebase-database@@19.2.1:96)
        at com.killer.storytime.StoryFragment.onCreateView(StoryFragment.java:50)
        at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2439)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
        at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
        at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
        at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:802)

标签: android

解决方案


您不能通过 firebase 数据库子路径为空。您可以检查child()函数定义:

@NonNull
    @PublicApi
    public DatabaseReference child(@NonNull String pathString) {
        if (pathString == null) {
            throw new NullPointerException("Can't pass null for argument 'pathString' in child()");
        } else {
            if (this.getPath().isEmpty()) {
                Validation.validateRootPathString(pathString);
            } else {
                Validation.validatePathString(pathString);
            }

            Path childPath = this.getPath().child(new Path(pathString));
            return new DatabaseReference(this.repo, childPath);
        }
    }

推荐阅读