簡體   English   中英

片段savedInstanceState不起作用

[英]Fragment savedInstanceState not working

我在這里有幾個片段,有一個片段想在回到它時保存其狀態。 我嘗試在一個測試片段中執行此操作,在該片段中,當我單擊按鈕時,textview文本將更改為“ test1”(textview的默認文本為“ New Text”)。 因此,textview會更改文本,但是當我移入另一個片段並返回到它( HomeFragment )時,textview將返回其默認狀態文本(“ New Text”)。 因此,我認為savedInstanceState不能正常工作,因為如果可以,當我回到該片段時,它應該具有“ test1”。 這是我的代碼:

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);
    }

}
public class HomeFragment extends Fragment {
    Button button;
    TextView txt_test;
    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);
        txt_test = (TextView) view.findViewById(R.id.textView2);
        button = (Button) view.findViewById(R.id.button3);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                txt_test.setText("test1");
            }
        });

        if(savedInstanceState == null) {
            // do nothing
        } else {
            data_test = savedInstanceState.getString("txt_test");
            txt_test.setText(data_test);
        }
        return view;
    }

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState){
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putString("txt_test",data_test);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM