保存状态仅保存片段的部分

时间:2013-02-25 13:16:26

标签: android bundle

我有一个保存我应用程序某些部分状态的问题。

在布局中,我有EditTextButtonTextView。当用户输入值并计算(按钮点击)时,将填充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()

1 个答案:

答案 0 :(得分:3)

您可以强制TextView保存其状态以及EditText。只需为您的布局文件中的TextView.setFreezesText(true)标记致电android:freezesText="true"或添加TextView