如果android中已存在数据,则防止数据再次加载?

时间:2016-01-23 09:45:27

标签: android android-layout android-fragments navigation-drawer

我有一个导航抽屉,其中包含更新,照片等菜单项列表。 在这里,我根据导航抽屉中的点击进行片段交易。

 int id = item.getItemId();

 if (id == R.id.nav_updates) {
    UpdatesFragment fragment = new UpdatesFragment();
    android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
    fragmentTransaction.replace(R.id.frame_container,fragment);
    fragmentTransaction.commit();
}

假设,如果我点击nav_updates,则将frame_container替换为UpdatesFragment。这没有问题。

  1. 如果我在同一页面中再次单击相同的菜单项nav_updates,它会再次从服务器加载数据并创建一个视图。但是,我不想再次加载如果我们已经在页面中点击导航抽屉中的项目。

  2. 在执行(1)点时,它也会重叠。认为我在UpdatesFragment中有一个viewpager和2 Tab。如果我第一次点击该项目,它会加载并显示2 Tab。当我再次点击时,它会重叠。这意味着,当我轻扫时,它会被击中,我需要进行2次滑动才能到达每个标签。

  3. UpdatesFragment已经打开数据时,除非我刷新,否则我想显示旧数据。 (不知道我想把网络代码放在哪里.onCreate / onCreateView / onActivityCreated)

  4. 提前致谢!

    编辑1:

    我解决了第一个问题,

    UpdatesFragment fragment_t = (UpdatesFragment) getSupportFragmentManager().findFragmentByTag("updates");
                if (fragment_t != null && fragment_t.isVisible()) {
                    drawer.closeDrawer(GravityCompat.START);
                }
                else {
                    UpdatesFragment fragment = new UpdatesFragment();
                    android.support.v4.app.FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
                    fragmentTransaction.replace(R.id.frame_container,fragment, "updates");
                    fragmentTransaction.commit();
                }
    

0 个答案:

没有答案