gpt4 book ai didi

android - 为什么不保留所有 TextView 及其状态?

转载 作者:行者123 更新时间:2023-11-29 17:47:00 25 4
gpt4 key购买 nike

我对 Android(和编码)还是个新手,这是我第一次使用滑动 View ,即 ViewPagers 和适配器。我的 Activity 有 3 个 fragment 。当我从 fragment A 移动到 fragment B 时,一切都很好。但是当我移动到 Fragment C 时,onStop 会为 Fragment A 调用。当我返回到 Fragment A 时,我的所有 View 都已恢复,只有少数 View 除外。 EditText View 没问题,但其他 View 有问题...

  • 我有几个启用/禁用的 TextView。这些状态不会保留。
  • 其他 TextView 可以是可见的/不可见的。这些状态不会保留。
  • 我认为 TextView 文本也没有被保留。

我的印象是 onSaveInstanceState 保存 View 。我必须手动保存这些状态吗?由于这些是 Fragments,是否应该通过 arguments 来完成?

这是我的 fragment onCreateView

@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(
R.layout.activity_grade_calculator, container, false);
Bundle args = getArguments();
if(args.containsKey(PERSISTENT_FIRSTLOAD_BUNDLE_KEY)) {
firstLoad = args.getBoolean(PERSISTENT_FIRSTLOAD_BUNDLE_KEY);
}
context = this.getActivity();

if(firstLoad) {
bindAll();
setInitialViews();
setListeners();
}
firstLoad = false;
return rootView;
}

这是MyPagerAdapter

@Override
public Fragment getItem(int i) {
//System.out.println("We are trying to get item " + i);
switch(i) {
case 0:
Fragment fragment = new FinalCalcFragment();
return fragment;
case 1:
Fragment fragment1 = new NewGradeCalcFragment();
return fragment1;
case 2:
Fragment fragment3 = new NewGradeCalcFragment();
return fragment3;
default:
return null;
}

}

这里有一些 TextView 表现不佳。

<TextView
android:id="@+id/tv_grade_calc_forgrade"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/radioGroup1"
android:layout_marginTop="4dp"
android:text="@string/tv_grade_calc_forgrade" />

<TextView
android:id="@+id/tv_grade_calc_ifscore"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/radioGroup1"
android:layout_marginTop="4dp"
android:text="@string/tv_grade_calc_ifscore" />

<TextView
android:id="@+id/tv_grade_calc_result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@id/tv_grade_calc_ifscore"
android:layout_marginRight="10dp"
android:layout_marginTop="-7dp"
android:textSize="28sp" />

编辑:顺便说一句,我已经尝试过 FragmentPagerAdapterFragmentStatePagerAdapter。我不完全理解他们的做法有何不同,但似乎都没有给我想要的东西。

最佳答案

如果您的 ViewPager 中只有这三个 Fragments,您可以定义最小数量的 Fragments 始终保存在内存中一次使用方法 mViewPager.setOffscreenPageLimit(value);默认值为 1。这就是当您滑动到 Fragment C 时您的 Fragment A 状态丢失的原因。如果将此值增加到 2,则不会发生这种情况,因为 ViewPager 将始终保持当前显示的 Fragment 的两个 Fragments 的状态(提前或之前)。

关于android - 为什么不保留所有 TextView 及其状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25755196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com