更改活动时保持所有值不变

时间:2013-07-30 19:13:31

标签: java android-activity android-tabs

enter image description here

当我在当前旅行标签下输入任何内容并切换到显示结果标签并返回当前旅行标签时,所有条目返回默认值。我该如何预防?

即使我转到显示结果标签视图,我想要输入任何内容或在当前旅行下选择保持不变。

我正在使用一个MainActivity,每个标签都有两个独立的活动。

这是Tab片段中的一个:

package com.test.testing;


public class Trip2 extends Fragment {
     EditText nameOfInf;    
    @Override
    public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
        final RelativeLayout mFrame2 =  (RelativeLayout) inflater.inflate( R.layout.trip, container, false ); 

        final Button btnCalc = (Button) mFrame2.findViewById(R.id.btnCalculate);

        nameOfInf = (EditText) mFrame2.findViewById(R.id.etName);
        final EditText tollAmount = (EditText) mFrame2.findViewById(R.id.etToll);

        btnCalc.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                //DO SOMETHING
            }
        });
        return mFrame2;
    }

}

我想保存以下值:

nameOfInf = (EditText) mFrame2.findViewById(R.id.etName);

因此,如果我切换到另一个标签,这将被保存,并在返回标签时,该值将保持不变。

如果可行,我该如何实施以下内容:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  savedInstanceState.putString("name", nameOfInf.getText());
}

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  nameOfInf.setText (savedInstanceState.getString("name"));
}

1 个答案:

答案 0 :(得分:1)

当活动暂停时,您需要在捆绑中保存状态,并在恢复活动时恢复该数据。阅读Android activity lifecycle.

这假设您在选项卡控件中嵌入活动。