【发布时间】:2020-09-08 17:56:09
【问题描述】:
我有两个片段,它们是选项卡式片段。
public class SectionsPagerAdapter extends FragmentPagerAdapter {
@StringRes
private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2};
private final Context mContext;
public SectionsPagerAdapter(Context context, FragmentManager fm, String company) {
super(fm);
mContext = context;
}
@Override
public Fragment getItem(int position) {
Fragment fragment = null;
switch (position){
case 0:
fragment = new GeneralFragment();
break;
case 1:
fragment = new ContactFragment();
break;
}
return fragment;
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return mContext.getResources().getString(TAB_TITLES[position]);
}
@Override
public int getCount() {
return 2;
}
}
ContactFragment 是:
public class ContactFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
reference = FirebaseDatabase.getInstance().getReference();
return inflater.inflate(R.layout.fragment_contact, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getDataFromDatabase();
}
private void getDataFromDatabase(){
reference.child("mPath1").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String address = dataSnapshot.child("address").getValue().toString();
String email = dataSnapshot.child("e_mail").getValue().toString();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
和GeneralFragment:
public class GeneralFragment extends Fragment {
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
reference = FirebaseDatabase.getInstance().getReference();
return inflater.inflate(R.layout.fragment_contact, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getDataFromDatabase();
}
private void getDataFromDatabase(){
reference.child("mPath2").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String username = dataSnapshot.child("username").getValue().toString();
String phoneNum = dataSnapshot.child("phone_number").getValue().toString();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError){
}
});
}
}
我想在用户看到 ContactFragment 时获取地址和电子邮件,并在用户看到 GeneralFragment UI 时获取用户名和电话号码。但是两个 firebase 方法都运行,并且在创建 Activity 时从数据库中获取所有数据。为什么会发生这种情况以及如何处理。
【问题讨论】:
-
你能分享通用片段代码吗?
-
当然。在这里
-
所以你问为什么两种方法同时工作?
-
是的,Ticherhaz,这就是我要问的
标签: java android firebase android-fragments firebase-realtime-database