我有一个保存我应用程序某些部分状态的问题。
在布局中,我有EditText
个Button
和TextView
。当用户输入值并计算(按钮点击)时,将填充TextView
。
当方向更改没有任何反应时,视图会被传递并完美地运行,但是当我滑动(使用我的ViewPager
)时,填充的TextView
的状态不会被保存。我有3个片段,如果我只是滑动,从右到中说它保存但是如果我向左边滑动TextView
在我返回片段时未填充,则输入{{1保存。
我的期望是来自EditText
(正在进行计算并填充onClick()
)的过程未保存,我该如何处理呢?我已经尝试了Googles site上的指南,但没有任何运气。
我的代码是:
TextView
清单:
public class FuelConsumptionFragment extends Fragment implements OnClickListener {
View view;
int savedState = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
savedState = savedInstanceState.getInt("curChoice", 0);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", savedState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fuel_consumption, container, false);
Button calculate_fuel = (Button)view.findViewById(R.id.calculate_fuel);
calculate_fuel.setOnClickListener(this);
return view;
}
编辑:我有一个模糊的想法,<activity
android:name="simcas.fartberegneren.MainActivity"
android:icon="@drawable/fartberegneren"
android:label=""
android:configChanges="orientation|screenSize" >
</activity>
中的通货膨胀可能是问题,这是正确的吗?
编辑2:只需绕过我的代码并意识到我的“自定义”适配器可能是问题的一部分,代码就是:
onCreateView
这会导致问题吗?正如我所知,我在切换位置时创建一个新的public class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 3;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0: return new SpeedZonesFragment();
case 1: return new DistanceFragment();
case 2: return new FuelConsumptionFragment();
default: return null;
}
}
}
,是正确的吗?
修改3: Fragment
的代码:
onClick()
答案 0 :(得分:3)
您可以强制TextView
保存其状态以及EditText
。只需为您的布局文件中的TextView.setFreezesText(true)
标记致电android:freezesText="true"
或添加TextView
。