将MaterialNavigationDrawer与ViewPager一起使用时出错



我正在开发一个应用程序,该应用程序使用MaterialNavigationDrawer作为左侧菜单,它有6个选项(按垂直顺序)可以在此菜单中打开:5个选项打开片段(标题、趋势、兴趣、通知、设置),1个打开对话框(注销)。

选项"趋势"、"兴趣"、"通知"one_answers"设置"只是打开一个彩色片段。选项"标题"打开一个ViewPager,它可以有直到31个选项卡正常生成。管理这个"Headlines"选项的类是HeadlinesFragment类。

MaterialNavigationDrawer设置为TimelineActivity,它调用6个菜单选项:HeadlinesFragment、Tendences Fragment,InterestsFragment,NotificationsFragment、SettingsFragment或LogoutDialog。

类HeadlinesFragment具有ViewPager,设置到类HeadlinesViewPagerAdapter中。这个类调用类HeadlinesPagerFragment的普通实例。所以我们有这样的逻辑:

时间线活动->标题片段->标题视图页面适配器->标题页面片段

  • TimelineActivity:实例化MaterialNavigationDrawer的类
  • 标题片段:MaterialNavigationDrawer的第一个菜单选项
  • 标题ViewPagerAdapter:查看我们放置每个选项卡的寻呼机适配器(总共可以是31个)
  • HeadlinePagerFragment:与ViewPager的选项卡相关的片段

我在这个应用程序中面临的问题是:当我选择"趋势"、"兴趣"、"通知"或"设置"等选项(只打开一个简单的彩色片段),然后返回"头条"选项时,应用程序崩溃。

下面我展示了上面描述的4个类的源代码。

时间表活动

public class TimelineActivity extends MaterialNavigationDrawer {
    // ATTRIBUTES
    // Context.
    private Activity mActivity = TimelineActivity.this;
    // Material Navigation Drawer.
    private MaterialSection[] mSectionArray = new MaterialSection[NavigationDrawerOptions.values().length];
    private int[] mSectionColors = new int[NavigationDrawerOptions.values().length];
    // MATERIAL NAVIGATION DRAWER
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    @Override
    public void init(Bundle savedInstanceState) {
        Log.i(Globals.LOG_TAG, "TimelineActivity.init().");
        ColorUtils.changeStatusBarTransparent(getWindow());
        setSections();
    }
    // METHODS
    private void setSections() {
        Log.i(Globals.LOG_TAG, "TimelineActivity.setSections().");
        String[] titles = getResources().getStringArray(R.array.array_list__navigation_drawer);
        setSectionColors();
        // Sets sections.
        Fragment fragment = null;
        int imageId = 0;
        for (int i = 0; i < NavigationDrawerOptions.values().length; i++) {
            NavigationDrawerOptions option = NavigationDrawerOptions.fromInt(i);
            switch (option) {
                case HEADLINES:
                    Log.i(Globals.LOG_TAG, "TimelineActivity.setSections() -> HEADLINES.");
                    fragment = new HeadlinesFragment();
                    imageId = R.mipmap.ic_headlines_off;
                    break;
                case TRENDS:
                    fragment = new TendenciesFragment();
                    imageId = R.mipmap.ic_trends_off;
                    break;
                case INTERESTS:
                    fragment = new InterestsFragment();
                    imageId = R.mipmap.ic_interests_off;
                    break;
                case NOTIFICATIONS:
                    fragment = new NotificationsFragment();
                    imageId = R.mipmap.ic_notifications_off;
                    break;
                case SETTINGS:
                    fragment = new SettingsFragment();
                    imageId = R.mipmap.ic_settings;
                    break;
                case LOGOUT:
                    mSectionArray[i] = newSection(titles[i], R.mipmap.ic_logout, new MaterialSectionListener() {
                        @Override
                        public void onClick(MaterialSection section) {
                            LogoutDialog dialog = new LogoutDialog(mActivity);
                            Utils.callBackgroundDialog(mActivity, dialog);
                        }
                    });
                    addSection(mSectionArray[i]);
                    break;
            }
            if (option != NavigationDrawerOptions.LOGOUT) {
                Log.i(Globals.LOG_TAG, "TimelineActivity.setSections() -> addSection().");
                mSectionArray[i] = newSection(titles[i], imageId, fragment);
                addSection(mSectionArray[i]);
                mSectionArray[i].setSectionColor(ContextCompat.getColor(this, mSectionColors[i]));
            }
        }
    }
    private void setSectionColors() {
        mSectionColors[0] = Globals.HEADLINES_THEME_COLOR;
        mSectionColors[1] = Globals.TRENDS_THEME_COLOR;
        mSectionColors[2] = Globals.INTERESTS_THEME_COLOR;
        mSectionColors[3] = Globals.NOTIFICATIONS_THEME_COLOR;
        mSectionColors[4] = Globals.SETTINGS_THEME_COLOR;
        mSectionColors[5] = Globals.LOGOUT_THEME_COLOR;
    }
}

标题片段

public class HeadlinesFragment extends BaseFragment {
    // ATTRIBUTES
    // Context.
    private Activity mActivity;
    // Layout.
    private ImageView mParentView;
    private View mRootView;
    private List<Interest> mInterestList;
    private HeadlinesViewPagerAdapter mHeadlinesViewPagerAdapter;
    private SlidingTabLayout mSlidingTabLayout;
    private ViewPager mViewPager;
    // CONSTRUCTOR
    public static HeadlinesFragment newInstance() {
        HeadlinesFragment fragment = new HeadlinesFragment();
        return fragment;
    }
    // FRAGMENT LIFE CYCLE
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.onCreateView().");
        mActivity = getActivity();
        mRootView = inflater.inflate(R.layout.fragment_headlines, container, false);
        ColorUtils.changeStatusBarTransparent(getActivity().getWindow());
        setHasOptionsMenu(true);
        setLayout();
        return mRootView;
    }
    // VIEW METHODS
    private void setLayout() {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.setLayout().");
        mInterestList = ContentManager.getInstance().getLoggedUser().getInterests();
        mParentView = (ImageView)mRootView.findViewById(R.id.id_fragment_headlines__parent_view);
        hideBottomView();
        setViewPager();
    }
    private void hideBottomView() {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.hideBottomView().");
        Utils.hideBottomView(mRootView, R.id.id_fragment_headlines__main_linear_layout, KitKatEnum.LINEAR_LAYOUT_OPTION);
        Utils.hideBottomView(mRootView, R.id.id_fragment_headlines__bottom_image_view, KitKatEnum.IMAGE_VIEW_OPTION);
    }
    private void setViewPager() {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.setViewPager().");
        setViewPagerAdapter();
        setViewPagerListeners();
    }
    private void setViewPagerAdapter() {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.setViewPagerAdapter().");
        mViewPager = (ViewPager)mRootView.findViewById(R.id.id_fragment_headlines__view_pager);
        mHeadlinesViewPagerAdapter = new HeadlinesViewPagerAdapter(getFragmentManager(), mInterestList);
        mViewPager.setAdapter(mHeadlinesViewPagerAdapter);
        onPageSelectedAction(0);
        setTabs();
    }
    private void setViewPagerListeners() {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.setViewPagerListeners().");
        mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }
            @Override
            public void onPageSelected(int position) {
                Log.i(Globals.LOG_TAG, "HeadlinesFragment.setViewPagerListeners().onPageSelected().");
                onPageSelectedAction(position);
            }
            @Override
            public void onPageScrollStateChanged(int state) {}
        });
    }
    private void onPageSelectedAction(Integer position) {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.onPageSelectedAction(" + position + ").");
        // Gets colors.
        updatesCurrentThemeColor(position);
        String color = ContentManager.getInstance().getLoggedUser().getInterests().get(position).getColor();
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.onPageSelectedAction().onPageSelectedAction(" + position + ") -> " +
            "Current theme color is " + color + ".");
        // Changes colors.
        String alphaColor = ColorUtils.addTransparencyToColor(color);
        int colorId = Color.parseColor(alphaColor);
        Drawable drawable = ContextCompat.getDrawable(getActivity(), R.drawable.circle_button);
        drawable.setColorFilter(new PorterDuffColorFilter(colorId, PorterDuff.Mode.MULTIPLY));
        // Updates Headline list.
        HeadlinesPagerFragment fragment = (HeadlinesPagerFragment)(
                (HeadlinesViewPagerAdapter)mViewPager.getAdapter()).getFragment(position);
        if (fragment != null) {
            Log.i(Globals.LOG_TAG, "HeadlinesFragment.onPageSelectedAction().onPageSelectedAction(" + position + ") -> " +
                "Calling getHeadlineList().");
            getHeadlineList(fragment);
        }
    }
    private void updatesCurrentThemeColor(Integer position) {
        ContentManager.getInstance().setPageNumber(position);
        User loggedUser = ContentManager.getInstance().getLoggedUser();
        String color = loggedUser.getInterests().get(position).getColor();
        ContentManager.getInstance().setCurrentThemeColor(color);
    }
    private void setTabs() {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.setTabs().");
        mSlidingTabLayout = (SlidingTabLayout)mRootView.findViewById(R.id.id_fragment_headlines__sliding_tab_layout);
        mSlidingTabLayout.setDistributeEvenly(true);
        mSlidingTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
            @Override
            public int getIndicatorColor(int position) {
                return ContextCompat.getColor(getActivity(), R.color.white);
            }
        });
        // Setting the ViewPager for the SlidingTabsLayout.
        mSlidingTabLayout.setViewPager(mViewPager);
    }
    // HEADLINE METHODS
    private void getHeadlineList(HeadlinesPagerFragment fragment) {
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.getHeadlineList().");
        // Variables.
        Integer pageNumber = ContentManager.getInstance().getPageNumber();
        Integer interestId = ContentManager.getInstance().getLoggedUser().getInterests().get(pageNumber).getId();
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.getHeadlineList() -> Page number is " + pageNumber + ".");
        Log.i(Globals.LOG_TAG, "HeadlinesFragment.getHeadlineList() -> Interest id is " + interestId + ".");
        // Retrofit.
        String pagination = "10,0";
        String sort = "desc";
        String filters;
        if (interestId == 0) {
            filters = "popularity:+popular";
        } else {
            filters = "category:" + interestId + "|type:posts";
        }
        // Checks connection.
        if (!Utils.hasConnection(mActivity)) {
            Utils.callLostConnectionDialog(mActivity);
        } else {
            Log.i(Globals.LOG_TAG, "HeadlinesFragment.getHeadlineList() -> Calling RetrofitUtils.searchMake().");
            String[] fields = new String[] { pagination, sort, filters };
            RetrofitUtils.searchMake(mActivity, fragment, null, fields,
                SearchMakeEnum.HEADLINES_PAGER_FRAGMENT, Utils.hourglass(mActivity));
        }
    }
}

标题ViewPagerFragment

public class HeadlinesViewPagerAdapter extends FragmentStatePagerAdapter {
    // ATTRIBUTES
    private Map<Integer, String> mFragmentTags;
    private List<Interest> mInterestsList;
    private List<HeadlinesPagerFragment> mFragments;
    // CONSTRUCTOR
    public HeadlinesViewPagerAdapter(FragmentManager fragmentManager, List<Interest> interestList) {
        super(fragmentManager);
        mInterestsList = interestList;
        mFragmentTags = new HashMap<>();
        mFragments = new ArrayList<>();
        for (int i = 0; i < mInterestsList.size(); i++) {
            mFragments.add(HeadlinesPagerFragment.create(i));
        }
    }
    // FRAGMENT PAGER ADAPTER METHODS
    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }
    @Override
    public CharSequence getPageTitle(int position) {
        return mInterestsList.get(position).getName();
    }
    @Override
    public int getCount() {
        return mInterestsList.size();
    }
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Object object = super.instantiateItem(container, position);
        if (object instanceof Fragment) {
            // Record the fragment tag here.
            Fragment fragment = (Fragment)object;
            String tag = fragment.getTag();
            mFragmentTags.put(position, tag);
        }
        return object;
    }
    public Fragment getFragment(int position) {
        return mFragments.get(position);
    }
}

标题PagerFragment

public class HeadlinesPagerFragment extends BaseFragment {
    // CONSTANTS
    public static final String ARG_PAGE = "page";
    // ATTRIBUTES
    // Context.
    private Activity mActivity;
    private Fragment mFragment;
    // Recycler view.
    private ViewGroup mRootView;
    private SwipeRefreshLayout mSwipeRefreshLayout;
    private RecyclerView mRecyclerView;
    private HeadlineAdapter mAdapter;
    private List<Headline> mHeadlineList;
    // Others.
    private TextView mEmptyTextView;
    // CONSTRUCTOR
    public static HeadlinesPagerFragment create(int pageNumber) {
        HeadlinesPagerFragment fragment = new HeadlinesPagerFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_PAGE, pageNumber);
        fragment.setArguments(args);
        return fragment;
    }
    // FRAGMENT LIFE CYCLE
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.onCreateView().");
        mActivity = getActivity();
        mFragment = this;
        mRootView = (ViewGroup)inflater.inflate(R.layout.fragment_headlines_pager, container, false);
        setLayout();
        return mRootView;
    }
    @Override
    public void onResume() {
        super.onResume();
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.onResume() -> At onResume().");
        // Updates Headline list.
        updateHeadlinesList();
    }
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            Integer number = getArguments().getInt(ARG_PAGE);
            Log.i(Globals.LOG_TAG, getString(R.string.big_space));
            Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.setUserVisibleHint() -> Current position is " + number + ".");
            ContentManager.getInstance().setPageNumber(number);
            String color = ContentManager.getInstance().getLoggedUser().getInterests().get(number).getColor();
            ContentManager.getInstance().setCurrentThemeColor(color);
        }
    }
    // LAYOUT METHODS
    private void setLayout() {
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.setLayout().");
        // Sets the layout.
        mSwipeRefreshLayout = (SwipeRefreshLayout)mRootView.findViewById(R.id.id_fragment_headlines_pager__swipe_refresh_layout);
        mRecyclerView = (RecyclerView)mRootView.findViewById(R.id.id_fragment_headlines_pager__recycler_view);
        mEmptyTextView = (TextView)mRootView.findViewById(R.id.id_fragment_headlines_pager__empty_text_view);
        Typeface fontType = Typeface.createFromAsset(getActivity().getAssets(), Globals.FONT_TYPE);
        mEmptyTextView.setTypeface(fontType);
    }
    private void setRecyclerView(CustomProgressDialog progressDialog) {
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.setRecyclerView().");
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(layoutManager);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.setRecyclerView() -> Headline list size is " + mHeadlineList.size() + ".");
        Integer pageNumber = ContentManager.getInstance().getPageNumber();
        List<Interest> interestsList = ContentManager.getInstance().getLoggedUser().getInterests();
        Integer categoryId = interestsList.get(pageNumber).getId();
        mAdapter = new HeadlineAdapter(getActivity(), this, categoryId, null, mHeadlineList);
        mRecyclerView.setAdapter(mAdapter);
        progressDialog.cancel();
    }
    // HEADLINE METHODS
    private void updateHeadlinesList() {
        // Variables.
        Integer pageNumber = ContentManager.getInstance().getPageNumber();
        Integer interestId = ContentManager.getInstance().getLoggedUser().getInterests().get(pageNumber).getId();
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.updateHeadlinesList() -> Page number is " + pageNumber + ".");
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.updateHeadlinesList() -> Interest id is " + interestId + ".");
        // Retrofit.
        String pagination = "10,0";
        String sort = "desc";
        String filters;
        if (interestId == 0) {
            filters = "popularity:+popular";
        } else {
            filters = "category:" + interestId + "|type:posts";
        }
        // Checks connection.
        if (!Utils.hasConnection(mActivity)) {
            Utils.callLostConnectionDialog(mActivity);
        } else {
            Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.updateHeadlinesList() -> Calling RetrofitUtils.searchMake().");
            String[] fields = new String[] { pagination, sort, filters };
            RetrofitUtils.searchMake(mActivity, mFragment, null, fields,
                SearchMakeEnum.HEADLINES_PAGER_FRAGMENT, Utils.hourglass(mActivity));
        }
    }
    // CALLBACK
    public void checkValidHeadlineList(Boolean append, CustomProgressDialog progressDialog) {
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList().");
        List<Post> postList = ContentManager.getInstance().getPostList();
        mHeadlineList = RecyclerViewUtils.getHeadlineListFromPostList(postList);
        if (append) {
            Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList() -> Append list.");
            mAdapter.setFilter(mHeadlineList);
            progressDialog.cancel();
        } else {
            Boolean validHeadlineList = (mHeadlineList != null) && (mHeadlineList.size() > 0);
            if (validHeadlineList) {
                Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList() -> Valid list.");
                mEmptyTextView.setVisibility(View.GONE);
                mSwipeRefreshLayout.setVisibility(View.VISIBLE);
                setRecyclerView(progressDialog);
            } else {
                Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList() -> Empty list.");
                mEmptyTextView.setVisibility(View.VISIBLE);
                mSwipeRefreshLayout.setVisibility(View.GONE);
                progressDialog.cancel();
            }
        }
    }
}

此外,错误的LogCat:

05-14 00:36:40.742 30234-30234/com.example.rodrigo.facemagazine E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.rodrigo.facemagazine, PID: 30234
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setVisibility(int)' on a null object reference
at com.example.rodrigo.facemagazine.fragment.HeadlinesPagerFragment.checkValidHeadlineList(HeadlinesPagerFragment.java:172)
at com.example.rodrigo.facemagazine.manager.utils.json.JsonPostRawUtils.choosePostList(JsonPostRawUtils.java:98)
at com.example.rodrigo.facemagazine.manager.utils.json.JsonPostRawUtils.parsePostSearchData(JsonPostRawUtils.java:73)
at com.example.rodrigo.facemagazine.manager.utils.retrofit.RetrofitUtils.searchMakeOnSuccess(RetrofitUtils.java:232)
at com.example.rodrigo.facemagazine.manager.utils.retrofit.RetrofitUtils.access$100(RetrofitUtils.java:38)
at com.example.rodrigo.facemagazine.manager.utils.retrofit.RetrofitUtils$5.success(RetrofitUtils.java:213)
at com.example.rodrigo.facemagazine.manager.utils.retrofit.RetrofitUtils$5.success(RetrofitUtils.java:199)
at retrofit.CallbackRunnable$1.run(CallbackRunnable.java:45)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5422)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

标题PagerFragment的第172行是下面突出显示的行:

public void checkValidHeadlineList(Boolean append, CustomProgressDialog progressDialog) {
    Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList().");
    List<Post> postList = ContentManager.getInstance().getPostList();
    mHeadlineList = RecyclerViewUtils.getHeadlineListFromPostList(postList);
    if (append) {
        Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList() -> Append list.");
        mAdapter.setFilter(mHeadlineList);
        progressDialog.cancel();
    } else {
        Boolean validHeadlineList = (mHeadlineList != null) && (mHeadlineList.size() > 0);
        if (validHeadlineList) {
            Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList() -> Valid list.");
            // <<<<<--------------- ERROR IN THE LINE BELOW --------------->>>>>
            mEmptyTextView.setVisibility(View.GONE);
            mSwipeRefreshLayout.setVisibility(View.VISIBLE);
            setRecyclerView(progressDialog);
        } else {
            Log.i(Globals.LOG_TAG, "HeadlinesPagerFragment.checkValidHeadlineList() -> Empty list.");
            mEmptyTextView.setVisibility(View.VISIBLE);
            mSwipeRefreshLayout.setVisibility(View.GONE);
            progressDialog.cancel();
        }
    }
}
  • 检查void android.widget.TextView.setVisibility(int)

  • 如果使用mEmptyTextView,请检查XML和Java代码。。

  • 在XML中声明mEmptyTextView 的位置

  • 右:-android:visibility="消失"

  • 错误:-android:visibility="10"(任意数字)

在Java中使用

  • 右边是:-mEmptyTextView.setVisibility(View.GONE);

  • 错误为:-mEmptyTextView.setVisibility(10);它会给你带来错误无法运行这行的代码

    请检查并再次张贴错误

我修复了代码中的一些问题。我将ViewPager的选项卡从SlidingTabLayout更改为TabLayout,从的com.android.support:design:23.4.0',应用程序停止崩溃。

所以现在我使用谷歌libs:

'com.android.support:appcompat-v7:23.4.0'

'com.android.support:recyclereview-v7:23.4.0'

com.android.support:设计:23.4.0'

但现在,当我点击头条片段时,他显示了一个白色屏幕。

此视频显示了此错误:https://www.youtube.com/watch?v=CxDtTZOoM5A&feature=youtu.be

所以,就像我在第一篇文章中所说的:

1) 当用户单击左侧菜单的第一个选项(即MaterialNavigationDrawer)时,会调用标题片段

2) 此片段包含ViewPagerTabLayoutViewPager调用HeadlinesPagerFragment的多个实例。

3) 标题PagerFragment包含RecyclerView。错误发生在这里:当我将左侧菜单中的一个选项从"Manchetes"(英语中的"Headlines")更改为视频中的其他选项(英语中为"Notifications"的"Noticações")时,HeadlinesFragment会重新打开选项卡,但其中一些选项卡保持白色,而不会加载RecyclerView

因此,以下是重现错误的步骤:

1) 我登录应用程序。

2) 我点击左侧菜单的第一个选项("Manchetes"),然后点击该选项的每个选项卡。4个选项卡正常打开。

3) 我选择左侧菜单的其他选项(这次是"通知")。调用NotificationsFragment,带来用户的所有通知。好的。

4) 我选择左侧菜单的其他选项。这一次,选项"Manchetes"(在视频的0:20)。此选项打开第一个选项卡"Destaques"(英文为"Highlights"),并从服务器加载数据。但在0:25,我点击了第三个选项卡"Casa e Decoração"(英文为"House and Decoration"),这就是bug!RecyclerView未显示。此选项卡中出现一个白色屏幕。

如果我检查日志,来自后端的所有数据都是正常的。数据正在传递给HeadlineAdapterHeadlineFragmentRecyclerView的适配器),但选项卡保持白色。

我不知道为什么会发生这种事。原因是什么?

1) 进入物料导航抽屉?这是非常可能的,因为这个错误只是在我从左侧菜单选项切换时发生的。

2) 错误进入ViewPager

3) Bug进入RecyclerView或it适配器?

4) 有同步问题吗?

好吧,在我发布这个问题后,我将尝试用NavigationView替换我的应用程序的左侧菜单,从MaterialNavigationDrawerDrawerLayout,看看会发生什么。

最新更新