如何在加载页面后显示数据

时间:2016-05-15 16:23:15

标签: android tabs load

我有使用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首先我不知道为什么!

0 个答案:

没有答案