猿问

使用onCreateView但无法添加firebase的android片段

我在我的应用程序中创建了一个片段,我正在尝试将 firebase 添加到这个片段中。但是由于它使用 onCreateView 的面孔,它正在调用此错误。


public class ProfileFragment extends Fragment {


private DatabaseReference mUserDatabase;

private FirebaseUser mCurrentUser;


@Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    return inflater.inflate(R.layout.fragment_profile, container, false);


    mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();


}

在 mCurrentUser = FirebaseAuth.getInstance().getCurrentUser(); 我收到错误 unreachable 语句 有什么方法可以让我仍然使用片段进行此活动吗?


    @Nullable

@Override

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

    final View view =  inflater.inflate(R.layout.fragment_profile, container, false);

    mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();


    String current_uid = Objects.requireNonNull(mCurrentUser).getUid();


    mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(current_uid);


    ValueEventListener valueEventListener = mUserDatabase.addValueEventListener(new ValueEventListener() {

        @Override

        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {


            String name = dataSnapshot.child("name").getValue().toString();

            String image = dataSnapshot.child("image").getValue().toString();

            String status = dataSnapshot.child("status").getValue().toString();

            String thumb_image = dataSnapshot.child("thumb_image").getValue().toString();


        }


        @Override

        public void onCancelled(@NonNull DatabaseError databaseError) {


        }


    return view;

    });}}

返回视图错误;


POPMUISE
浏览 147回答 3
3回答

holdtom

在onCreateView()方法中的return 语句之前移动下面的行。 mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();return 语句之后的任何内容都无法访问,如错误语句所述。

哔哔one

让onActivityCreated()方法处理额外的工作。ValueEventListener是 的内部类DatabaseReference,因此,您不需要在实例化它之前创建对象。因此,删除该行。另外,请注意,return view;应该是您的onCreateView(). 确保在关闭它之前你有 return 语句。现在这样做。之后onCreateView(),创建另一个副本并粘贴以下代码。@Override    public void onActivityCreated(Bundle savedInstanceState) {        super.onActivityCreated(savedInstanceState);   mUserDatabase.addValueEventListener(new ValueEventListener() {        @Override        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {            String name = dataSnapshot.child("name").getValue().toString();            String image = dataSnapshot.child("image").getValue().toString();            String status = dataSnapshot.child("status").getValue().toString();            String thumb_image =              dataSnapshot.child("thumb_image").getValue().toString();        }        @Override        public void onCancelled(@NonNull DatabaseError databaseError) {        });}
随时随地看视频慕课网APP

相关分类

Java
我要回答