标签切换后 TextView 忘记了它的值

TextView forgets its value after tab switching

我在我的程序中设置了一个 tabhHost,其中包含 3 个选项卡,每个选项卡的内容中都有一个包含 textView 的片段。我在应用程序中设置了一个按钮,该按钮应该更新每个选项卡的内容。然而,我现在面临的问题是,如果我更改一个选项卡,它的内容就会被遗忘,并且新选项卡也没有任何价值,除非我再次单击该按钮。每个选项卡内容都有不同的 class 但在每个选项卡中 class 只是 returns 带有文本视图的视图。我假设在每个视图上重置的值都会膨胀,但是我找不到合理的方法让它按照我的意图工作。

这是我的按钮使用 运行 方法的部分代码:

 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 的代码,每个选项卡都有或多或少相同的代码,所以我现在 post 只有这个:

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 中,以便如果我的文本得到更新,它不会在视图刷新后恢复为默认值?

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

你可以参考这篇link。 Saving Data in SQL Databases.

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