0

ここにはいくつかのフラグメントがあり、この 1 つのフラグメントは、戻ったときにその状態を保存したい場所です。ボタンをクリックすると、テキストビューのテキストが「test1」に変更されるテストフラグメントで試してみました(テキストビューのデフォルトのテキストは「新しいテキスト」です)。したがって、テキストビューはテキストを変更しますが、別のフラグメントに移動してそこに戻ると ( HomeFragment)、テキストビューはデフォルトの状態のテキスト (「新しいテキスト」) になります。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);
    }

}
4

1 に答える 1