0

从 MainActivity 获取数据并在 Fragment 上处理时遇到问题。

起初,有4个片段。我正在使用TabLayoutViewPager。每当从 Tab 中选择一个片段时,它都会触发onPageSelected()方法。在这里,我实例化事务,并通过setArguments(). 在片段中,我在getArguments()成功的帮助下接收到字符串 URL,但是当我使用该 URL 从 API 检索数据时,fetchData()(using Volley)方法会忽略它。

下面是 onPageSelected() 方法

@Override
            public void onPageSelected(int position) {
                switch (position) {
                    case 0:
                        getSupportFragmentManager().beginTransaction().replace(
                                R.id.linear_frame,
                                FragmentAllLanguages.newInstance(0, NetworkUtils.URL_ALL_NEWS))
                                .commit();
                        break;

片段的 onCreateView()

        if (getArguments() != null) {
        fetchData(getArguments().getString(ARGS_URL));
        Toast.makeText(getContext(), "URL is " + getArguments().getString(ARGS_URL), Toast.LENGTH_SHORT).show();
        Log.e(TAG, "IF IF IF" + getArguments().getInt(ARGS_ID));
    } else {
        fetchData(NetworkUtils.URL_ALL_NEWS);
        Toast.makeText(getContext(), "else part", Toast.LENGTH_SHORT).show();
        Log.e(TAG, "ELSE ELSE ELSE");
    }

最后,选择片段时的“有趣”日志文件

04-18 02:43:20.764 5610-5610/com.example.orkhan.nexeber E/Volley: ELSE ELSE ELSE
04-18 02:43:20.768 5610-5610/com.example.orkhan.nexeber E/RecyclerView: No adapter attached; skipping layout
04-18 02:43:20.770 5610-5683/com.example.orkhan.nexeber D/EGL_emulation: eglMakeCurrent: 0x9e105420: ver 2 0 (tinfo 0x9e103370)
04-18 02:43:20.794 5610-5610/com.example.orkhan.nexeber E/Volley: IF IF IF2
04-18 02:43:20.850 5610-5610/com.example.orkhan.nexeber E/RecyclerView: No adapter attached; skipping layout

我的问题是为什么 if 语句调用了两次,尽管它在 Tab 中选择了一次?

我的版本可能是因为beginTransaction' 延迟,我的意思是,它不能像oncreateView()方法调用那样快地发送数据。这就是为什么首先执行else部分,然后在执行if部分时 RecyclerView 忽略它。

4

0 回答 0