Сохранять текст в TextView при вращении - PullRequest
0 голосов
/ 07 января 2019

У меня есть два фрагмента TestOneFragment, который по умолчанию, и TestTwoFragment, который добавляется в задний стек. Когда я поворачиваю экран, когда TestTwoFragment находится на переднем плане, текст также должен оставаться прежним.

Это метод onCreateView в моем фрагменте

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {

    viewHolder = inflater.inflate(R.layout.fragment_test_two, container, false)

    arguments?.getString("msg").run {
        if (this != null)
            viewHolder.tvFragTestTwo.text = this
        else
            viewHolder.tvFragTestTwo.text = "NO BUTTONS CLICKED"
    }

    listener.onCreateListener(viewHolder.tvFragTestTwo.text.toString())

    return viewHolder
}

Я создал интерфейс OnCreateListener, чтобы я мог использовать textView в родительском действии. Это реализация этого интерфейса.

override fun onCreateListener(string: String) {
    val bundle = Bundle()
    bundle.putString("msg", string)
    testTwoFragment.arguments = bundle
}

При каждом повороте экрана для текста устанавливается значение по умолчанию.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

я добавил android:configChanges="orientation|screenSize" в соответствующем теге активности внутри файла манифеста, и он работал для меня.

0 голосов
/ 07 января 2019

Каждый раз, когда вы поворачиваете экран, Android разрушает и воссоздает действие, связанное с вашим фрагментом. Чтобы сохранить текст в текстовом представлении, необходимо сохранить информацию в методе onSaveInstanceState и восстановить сохраненную информацию в методе onActivityCreated.

public class MainFragment extends Fragment {

    // These variable are destroyed along with Activity
    private String text;

    ...

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("your_text_id", text); // this text comes from your textview
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        text = savedInstanceState.getString("your_text_id");
    }

}
...