我有使用viewpager的标签布局(3个片段) 我想加载用户(登录的用户)数据并在其中一个选项卡上显示他的数据, 但我有一个问题,寻呼机在用户数据到达之前加载,所以数据指向null,所以应用程序崩溃! 我无法加载页面,然后加载数据, 我没有成功加载数据然后页面,但我认为这是唯一的方式
我考虑过将一个连续的while循环设置为true并在线程中获取数据,当线程结束时退出while循环并继续加载页面时,它不起作用但这是我能想到的唯一方法
所以,如果any1有任何建议,那就太棒了! :)
编辑:好的,这是我试图做的代码,它是一个asynctask,之后它应该附加片段
class LoadData extends AsyncTask<Void,Void,Void>
{
@Override
protected Void doInBackground(Void... params) {
mAuthStateListener=new Firebase.AuthStateListener() {
@Override
public void onAuthStateChanged(AuthData authData) {
if(authData != null) {
currUid = authData.getUid();
firebaseRef.child(ReferenceUrl.CHILD_USERS).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.getKey().equals(currUid)) {
currUser = dataSnapshot.getValue(User.class);
loadData = true;
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
else
{
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // LoginActivity is a New Task
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); // The old task when coming back to this activity should be cleared so we cannot come back to it.
startActivity(intent);
}
}
};
firebaseRef.addAuthStateListener(mAuthStateListener);
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
for(int i=0;i<tabIcons.length;i++) {
tabLayout.getTabAt(i).setIcon(tabIcons[i]);
}
}
}
看看closeley我在线程之后做了viewpager的东西并且出于某种原因 片段上的onCreateView首先我不知道为什么!