У меня есть несколько фрагментов здесь, и есть этот один фрагмент, где я хочу сохранить его состояние, когда вернусь к нему. Я попытался сделать это в тестовом фрагменте, где, когда я нажимаю кнопку, текст текста будет изменен на «test1» (текст текста по умолчанию - «Новый текст»). Таким образом, текстовое изменение изменяет текст, но когда я перехожу в другой фрагмент и возвращаюсь к нему (HomeFragment
), текстовое изображение переходит в текст состояния по умолчанию («Новый текст»). Поэтому я думаю, что savedInstanceState
не работает, потому что, если это так, он должен иметь «test1», когда я вернусь к фрагменту. Вот мой код:Fragment savedInstanceState не работает
public class HomeFragment extends Fragment {
public Button button;
public TextView txt_test;
public String data_test;
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
return view;
}
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
if(savedInstanceState == null){
}
else{
data_test = savedInstanceState.getString("txt_test");
txt_test = (TextView) getActivity().findViewById(R.id.textView2);
txt_test.setText(data_test);
}
button = (Button) getActivity().findViewById(R.id.button3);
txt_test = (TextView) getActivity().findViewById(R.id.textView2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
txt_test.setText("test1");
}
});
}
public void onSaveInstanceState(Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString("txt_test",data_test);
}
}
'onActivityCreated' работает ** после **' onCreateView', так что вы перезаписать текст в TextView. – EpicPandaForce
Спасибо, что заметили мой пост, @EpicPandaForce. Поэтому сначала я должен включить onActivityCreated, а затем OnCreateView. Это то, что вы предлагаете? – IWantToBeAnAnonymous
no, вы должны переместить '' if (savedInstance == null) 'stuff в метод' onActivityCreated' (на самом деле вам нужно просто переместить все это в 'onViewCreated()') – EpicPandaForce