【问题标题】:How to handle Fragments reloading in Android?如何在 Android 中处理 Fragments 重新加载?
【发布时间】:2016-06-17 05:50:33
【问题描述】:

我创建了一个带有自定义页脚的 Activity,该页脚有 4 个按钮。

页脚按钮 onClick 的代码:

 @Override
public void onClick(View v)
{
    try
    {
        switch (v.getId())
        {
            case R.id.button1:

                    getSupportFragmentManager()
                            .beginTransaction()
                            .addToBackStack(null)
                            .replace(R.id.flcontent,Tab1)
                            .commit();

                break;

            case R.id.button2:

                getSupportFragmentManager()
                        .beginTransaction()
                        .addToBackStack(null)
                        .replace(R.id.flcontent,Tab2)
                        .commit();

                break;

            case R.id.button3:

                getSupportFragmentManager()
                        .beginTransaction()
                        .addToBackStack(null)
                        .replace(R.id.flcontent, Tab3)
                        .commit();

                break;

            case R.id.button4:


                getSupportFragmentManager()
                        .beginTransaction()
                        .addToBackStack(null)
                        .replace(R.id.flcontent, Tab4)
                        .commit();

                break;



        }
    } catch (Exception e)
    {
        e.printStackTrace();
    }

}

在 Tabs 的 onCreate 方法中,我调用服务器以获取列表。 不同的选项卡有不同的请求。

当我单击 Button 2 时,Tab2 会加载,依此类推,直到 Button4、Tab4

例如,当我从 Tab1 导航到 Tab2 时: 当我单击 Button2 时,Tab1 被 Tab2 替换并加载了一个新列表。 当我点击 Button1 返回时,如何防止在 Tab1 中再次调用服务器?

【问题讨论】:

  • 创建一个静态变量来跟踪,如果你调用了服务器,那么你就不会再调用它了

标签: android android-fragments fragment


【解决方案1】:

Android 片段的生命周期方法会在每次我们的片段被其他片段替换时自动调用。

使用作为应用程序中的片段的正确片段活动生命周期方法。例如当您的应用程序电影从 tabl 到 tab2 时,您使用该方法

//Add the below method to your tab1 fragment
@Override
void onDetach (){
   // write code here that would tell the server to stop loading data
   // you can also use onPause and onStop
}

查看 android 开发者文档中的片段生命周期方法 https://developer.android.com/guide/components/fragments.html#Creating

【讨论】:

  • 您能否详细说明一下。
  • 请检查更新后的答案并阅读文档以获取更好的理解。
【解决方案2】:

对我来说最好的方法是创建一个 Singleton 类,其中包含从服务器返回的所有选项卡的所有数据。

当您显示 Tab1 时,您应该检查 Singleton 类中是否有此选项卡的任何信息。如果有事,请不要向服务器发送调用。

您也可以通过在每个描述特定选项卡的类中为来自服务器的信息使用静态数据容器(列表、哈希映射等)来做到这一点。

我个人更喜欢第一种方式。

@KhizarHayat 的建议就像我上面描述的第二个选项,但只要确保在事务期间碎片被破坏后,服务器中的数据不会被删除。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2013-12-14
    • 2023-04-10
    相关资源
    最近更新 更多