我为片段制作了一个ViewPager布局和3个布局,每个片段还有一个Activity,first_fragment.java,第二个,第三个。第一个片段包含一个绘制区域,您可以在其中绘制线条。第二个包含按钮,用于选择颜色和笔触宽度。第三个包含使用颜色和宽度的统计信息。
现在的问题是,如果我从第一个扫描到第二个并且后退,绘制的线仍然存在,但如果我从第一个切换到第二个到第三个,然后再返回,则绘制的线条会消失。第二个和第三个片段目前是完全相同的,那么为什么这些线条会消失一次而另一个不会消失呢?
我使用了setOffscreenPageLimit并将限制设置为2.通常,限制为您提供可以向左和向右滑动而不重新创建片段的页数!所以在我的情况下,左边是2,右边是2!
ViewPager pager = (ViewPager) findViewById(R.id.viewPager);
pager.setOffscreenPageLimit(2);
答案 0 :(得分:0)
由于Android系统在ViewPager中从内存中卸载片段,因此行消失。
你有2个解决方案:
请问ViewPager不会破坏片段:
ViewPager pager =(ViewPager)findViewById(R.id.viewPager); pager.setOffscreenPageLimit(2);
使用onSaveInstanceState()回调来保存片段状态并在onCreate(Bundle state)中重新创建片段
公共类MyFragment扩展Fragment { private static final String EXTRA_PARAM =“my_custom_param1”; private static final String EXTRA_PARAM2 =“my_custom_param2”;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (savedInstanceState != null)
{
//restore state
Log.d("restore_state", savedInstanceState.getString(EXTRA_PARAM));
}
return content;
}
@Override
public void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
state.putString(EXTRA_PARAM, "whatever you want");
state.putInt(EXTRA_PARAM2, 12345);
}
}
第二种解决方案是优选的
答案 1 :(得分:0)
我的解决方案是: 添加以下内容:mPath.reset(); 在canvas.drawPath(,)
之后