如何在Android片段中维护数据

时间:2014-06-19 12:46:51

标签: android android-fragments

我有一个活动有5个按钮:button1,button2,button3,button4,button5。

  • button1单击----打开fragment1
  • button2点击---- openf ragment2
  • button3点击----打开fragment3
  • button4点击----打开fragment4
  • button5点击----打开fragment5

在fragment1中,我正在下载数据并在自定义列表视图中显示。在fragment2中,我正在下载数据并在edittexts,textviews..etc中显示。 但是,如果我再次单击button1,则会再次下载数据。我想通过单击按钮显示用户从fragment1返回到fragment2的相同视图。 我怎样才能达到这个逻辑?请帮帮我。如果您需要我将提供的任何信息。 先感谢您!

编辑:我需要Android片段中的谷歌浏览器选项卡功能。其中标签是片段。如果您在谷歌搜索中打开一个网站并在另一个选项卡中打开另一个页面。如果您可以导航到第一个选项卡,您只能看到打开的一个。在我的情况下,我从片段的开头开始,以达到安卓片段中的chrome选项卡功能。

2 个答案:

答案 0 :(得分:0)

我会在此应用中使用Model-view-controller架构。

这意味着创建一个用于存储此数据的类。在设计课程时使用singleton模式。用户首次按下按钮1,在创建片段时,从Model类调用方法以检查数据是否已下载。如果没有下载,则获取它,将其存储在类中并显示它。如果下载了数据,则使用Model类中的方法获取数据并显示它。

如果要显示的数据量较少,可以使用bundlesintents进行存储。

更新: 下面是一个单例类的简单示例,可用于存储数据并查明您的类是否包含初始化数据。在我的例子中,我将数据用作int值,但你可以自由使用你想要的任何类型,甚至是类。

public class SingletonExample {
    private static SingletonExample mSingleton = null;
    private int mMyData;
    private boolean mDataInitialized;
    private SingletonExample() {
        mDataInitialized = false;
        }
    public static SingletonExample getInstance() {
            if (mSingleton == null) {
                        mSingleton = new SingletonExample();
                }
            }
            return mSingleton;
    }

    public boolean isDataInitialized() {
        return mDataInitialized;
    }

    public void setMyData(int myData) {
        mMyData = myData;
        mDataInitialized = true;
    }

    public int getMyData() {
        return mMyData;
    }
}

你打电话的单身人士电话如下:

SingletonExample mDataBank = SingletonExample.getInstance( );
mDataBank.setMyData(0);

答案 1 :(得分:0)

有很多方法可以解决这个问题。您下载的任何数据都可以临时或永久存储。如果你想暂时存储它,你可以:

  • 使用ArrayList<HashMap<String,String>>对象存储它。

或永久使用

  • SQLiteDatabase
  • SharedPrefrences

取决于数据类型。

现在无论何时打开片段,您都可以检查数据是否已存在,如果没有您点击服务并获取数据,否则您可以直接从您选择的来源阅读。