В моем проекте андроида есть фрагмент, в котором он динамически получает данные из другого класса. Я сохраняю эти данные (одну строку и Int) в комплекте, и я хочу, чтобы этот пакет был восстановлен при повороте экрана , Поэтому я использовал метод onSaveInstanceState.сохранение с использованием onSaveInstanceState в фрагменте
В этом фрагменте метод «ответить» получает данные (одну строку и Int) из другого класса. Я могу напечатать эти строки в Logcat в методе ответа.
фрагмент кода:
public class Images extends android.support.v4.app.Fragment implements Imageinfo {
private RecyclerView IRecyclerView;
private RecyclerView.Adapter IAdapter;
private RecyclerView.LayoutManager ILayoutManager;
private Context ctx;
private Bundle bundle=new Bundle();
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v =inflater.inflate(R.layout.images, container, false);
Log.d("ONCREATE VIEW", "TRUE");
IRecyclerView = (RecyclerView) v.findViewById(R.id.images_tab);
IRecyclerView.setHasFixedSize(true);
ILayoutManager = new LinearLayoutManager(getContext());
IRecyclerView.setLayoutManager(ILayoutManager);
if(savedInstanceState!=null){
Log.d("BUNDLE ADDED NOT NULL", String.valueOf(savedInstanceState.size()));
IAdapter = new ImageAdapter(this.getContext(),((fileselect)getContext()).imageset,bundle);
IRecyclerView.setAdapter(IAdapter);
}
else{
Log.d("BUNDLE ADDED NULL", "TRUE");
IAdapter = new ImageAdapter(this.getContext(),((fileselect)getContext()).imageset,null);
IRecyclerView.setAdapter(IAdapter);
}
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState=bundle;
Log.d("SAVING TIME", String.valueOf(outState.size()));
super.onSaveInstanceState(outState);
}
@Override
public void respond(String str,int type) {
if(str!=null) {
if (type == 1) {
bundle.putString(str, str);
Log.d("BUNDLE ADDED", bundle.getString(str));
Log.d("BUNDLE ADDED Size",String.valueOf(bundle.size()));
} else {
bundle.remove(str);
Log.d("BUNDLE REMOVED Size", String.valueOf(bundle.size()));
}
}
}
}
ПРОБЛЕМА:
Хотя метод ответа приема данных (одна строка и Int) и сохранение в Bundle, расслоение становится нулевой размер в onSaveInstanceState, когда экран поворачивается. onSaveInstanceState получает вызов, когда я поворачиваю экран, но пучок становится нулевым. Поскольку пакет становится равным нулю, я не смог восстановить две строки.
Проверить здесь http://stackoverflow.com/questions/11831444/onsaveinstancestate-and-fragments – malrok44
onSaveInstanceState становится называется. Но переменная расслоения становится равной нулю. – sandesh