Java 使用onCreateView的android片段,但无法添加firebase
我已经在我的应用程序中创建了一个片段,我正在尝试将firebase添加到此片段中。但是由于它使用的是onCreateView,因此它在此调用了一个错误Java 使用onCreateView的android片段,但无法添加firebase,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我已经在我的应用程序中创建了一个片段,我正在尝试将firebase添加到此片段中。但是由于它使用的是onCreateView,因此它在此调用了一个错误 public class ProfileFragment extends Fragment { private DatabaseReference mUserDatabase; private FirebaseUser mCurrentUser; @Nullable @Override public View onCreateView(Lay
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;
});}}
返回视图错误 只需在return语句之前移动mCurrentUser=FirebaseAuth.getInstance.getCurrentUser行 在onCreateView方法中返回station之前移动下行
mCurrentUser = FirebaseAuth.getInstance().getCurrentUser();
return语句之后的任何内容都是不可访问的,正如error语句所述。更新此
@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();
}
到
让onActivityCreated方法处理其他作业
ValueEventListener是DatabaseReference的一个内部类,因此,在实例化对象之前不需要创建它。因此,请删除该行
另外,要注意返回视图;应该是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) {
});
}
我添加了这个,它一开始工作,但现在似乎导致了一个新的错误代码更新。
@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) {
});
}