我有一个有很多片段的活动。在所有片段中,我在onViewCreated
中获得视图,如下所示:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
tv1 = (TextView)view.findViewById(R.id.tv1);
tv2 = (TextView)view.findViewById(R.id.tv2);
tv3 = (TextView)view.findViewById(R.id.tv3);
}
我不会将文本视图的文本存储在状态中。有一个片段扩展了ListFragment
,我更改适配器的项并刷新列表视图。
当我回到以前的片段(我使用popBackStack()
,因为我需要使用back按钮(应用程序在kiosk模式下运行)时,一些片段中的文本会丢失,而在另一些片段(和listview)中,所做的更改将保持在原地。
我使用replace
替换当前帧中的片段。
编辑
正在丢失的值是TextViews和ImageButtons (图像资源)。EditText视图中的文本不会丢失。
为什么这种情况只发生在一些片段中,我如何解决数据丢失问题?
发布于 2018-06-15 18:14:39
你必须用
android:freezesText="true"
在您的布局文本视图中,您希望保留其文本。
希望能帮上忙。
发布于 2015-06-24 09:36:44
让我看看我是否理解你的处境:
Fragment1
的一个实例,其中包含您的TextView
。Fragment1
实例替换为Fragment2
实例。Fragment1
,但当您返回时,TextView
中的文本已经丢失。我已经看到了发生这种情况的情况,因为包含原始TextView
的TextView
实例与第二次显示的Fragment1
实例不同。如果要显示两个不同的Fragment1
实例,则第二个实例将不会显示第一个实例包含在其文本视图中的文本。
因此,请看一看管理碎片事务的代码。在展示片段之前,您是否正在创建新的片段实例?如果是这样的话,您将不得不保留对要保留的片段的引用,而不是每次都重新创建它们。
另一件需要考虑的事情是TextView
是如何被填充的。也许实际数据在某处丢失了。
发布于 2015-06-24 09:41:59
如果使用的是替换,请使用实例变量在每个片段中存储数据,例如:
String value = "";
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
tv1 = (TextView)view.findViewById(R.id.tv1);
tv1.setText(value);
}
注意:每当textview数据被更新时,也会更新值变量。
https://stackoverflow.com/questions/31032960
复制相似问题