有很多关于onSaveInstanceState()的问题没有被调用等。但是我无法找到这个特定问题的答案:
初始状况
使用Android Studio创建的基本应用程序,其中包含默认的NavDrawer实现。只需添加一个按钮作为测试。
意图
测试保存可见性以及按钮和文本视图的文本。
问题
如果orentation发生变化,使用onSaveInstanceState保存的值对该对象没有影响。
我尝试过的与视图/对象相关的所有内容都没有效果。
修改
我认为这是因为片段被“创建”的方式 - >新实例。我如何将数据传递给这样一个“重新创建”的片段。
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
private Button btnConnect;
private ProgressBar progress;
/**
* Returns a new instance of this fragment for the given sectionausgangssituation
* number.
*/
public static PlaceholderFragment newInstance(int sectionNumber) {
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
TextView textView = (TextView) rootView.findViewById(R.id.section_label);
textView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
btnConnect = (Button) rootView.findViewById(R.id.conov_btn_connect);
progress = (ProgressBar) rootView
.findViewById(R.id.conov_progress_connection);
// StatusLabel.setText(BluetoothController.get().getStatus().getMessage());
btnConnect.setOnClickListener(this);
if (savedInstanceState != null) {
Toast.makeText(getActivity(), "## test ##",
Toast.LENGTH_LONG).show();
btnConnect.setText(savedInstanceState.getString("savText"));
} else {
progress.setVisibility(View.GONE);
}
return rootView;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
((MainActivity) activity).onSectionAttached(
getArguments().getInt(ARG_SECTION_NUMBER));
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("savText", "Hallo");
}