切换选项卡后,TextView会忘记其值

时间:2015-08-22 14:52:38

标签: android android-fragments tabs android-tabhost

我在我的程序中设置了一个tabhHost,其中包含3个选项卡,每个选项卡的内容中包含一个包含textView的片段。我在应用程序中设置了一个按钮,用于更新每个选项卡的内容。然而,我现在面临的问题是,如果我更改标签,其内容会被遗忘,新标签也没有价值,除非我再次点击按钮。每个选项卡内容都有不同的类,但在每个选项卡中,类只返回带有textview的视图。我假设每个视图上重置的值都会膨胀但是我无法找到一种合理的方法让它按照我打算的方式工作。

以下是我的按钮运行方法的部分代码:

 public void getNum(View view) {

    proteinNeeded = weightNum.getValue() * FirstActivity.weightMultiplier;
    carbohydrateNeeded = weightNum.getValue() * 5;

    switch (weightMultiplier) {
        case 2: {
            resultTxt = String.format("Zapotrzebowanie:%nBiałko - %dg.%nWęglowodany - %dg.%n",
                    FirstActivity.proteinNeeded, FirstActivity.carbohydrateNeeded);
            FragmentTab.tv.setText(resultTxt);

            FragmentTab2.dietTxt = String.format("text1");
            FragmentTab2.tv.setText(FragmentTab2.dietTxt);

            FragmentTab3.foodTxt = String.format("text2");
            FragmentTab3.tv.setText(FragmentTab3.foodTxt);....

以下是FragmentTab.java中的代码,每个选项卡都有或多或少相同的代码,所以我现在只发布这个代码:

public class FragmentTab extends Fragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}


public static View v;
public static TextView tv;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.fragment_layout, container, false);
    tv = (TextView) v.findViewById(R.id.textResult);

    if (tv != null) {
        tv.setText("nothing has been input yet");
    }


    return v;
}

}

TL; DR - 如何在textView中保存我的值,以便在我的文本更新后,在刷新视图后它不会恢复为默认值?

1 个答案:

答案 0 :(得分:1)

解决问题的一个选项是使用SQLite数据库保存数据,并在返回该选项卡时从数据库中获取数据。

您可以参考此链接。 Saving Data in SQL Databases.

有关其他Android存储选项,请参阅此系列视频。 Android Data Storage Options.