Обработка двух фрагментов в двух разных действиях в Android Studio - PullRequest
0 голосов
/ 07 мая 2020

У меня есть два действия, в каждое из которых загружается по одному фрагменту. В первом действии у меня есть фрагмент, который имеет представление списка, и когда я нажимаю элемент представления списка, он переводит меня к другому действию с использованием Intent. Фрагменты нагрузки на 2-е действие. До сих пор он работает нормально.

Теперь, когда я нажимаю кнопку возврата устройства, чтобы снова go вернуться к просмотру списка, мне нужно щелкнуть 2–3 раза, чтобы go перейти к предыдущему действию просмотра списка, второму действие или фрагмент перезагружается несколько раз, прежде чем я вернусь к первому действию.

Не могу понять проблему.

Заранее спасибо !!!

В первом действии это как я загружаю фрагмент

fragment = new GrowSapceTutorialFragment();
                   fragmentManager = getSupportFragmentManager();
                    fragmentTransaction=fragmentManager.beginTransaction();




fragmentTransaction.replace(R.id.frame_container_grow_tutorial, fragment);
                    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
                    fragmentTransaction.commit();

Для кнопки возврата в 1-м действии:

@Override
    public void onBackPressed() {
        super.onBackPressed();

В GrowspaceTutorialfragment под кодом oncreate viewenter здесь:

  listViewTip.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                for(int i=0; i<=position;i++){

                    name = dataModelArrayList.get(position).getTitle().toString();
                    description = dataModelArrayList.get(position).getDescription().toString();
                    image = dataModelArrayList.get(position).getImageUrl().toString();
                    tipIntent = new Intent(getActivity(), TipDetailsActivity.class);
                    tipIntent.putExtra("Title",name);
                    tipIntent.putExtra("Des", description);
                    tipIntent.putExtra("Image", image);
                startActivity(tipIntent);

В моем действии с подробностями подсказки (2-е действие):

tipImage = findViewById(R.id.tipImageView);

        title = getIntent().getStringExtra("Title");
        description = getIntent().getStringExtra("Des");
        image = getIntent().getStringExtra("Image");
        Picasso.get().load(image).into(tipImage);

       bundle = new Bundle();
        bundle.putString("Title",title);
        bundle.putString("Des", description);


        fragment = new TipDetailsFragment();
        fragmentManager = getSupportFragmentManager();
        fragmentTransaction = fragmentManager.beginTransaction();
        fragment.setArguments(bundle);
        fragmentTransaction.detach(fragment);
        fragmentTransaction.attach(fragment);
        fragmentTransaction.replace(R.id.frame_container, fragment);
        fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        fragmentTransaction.commit();

Активность с подробностями подсказки кнопка «Назад» обрабатывается:

  @Override
    public void onBackPressed() {
      super.onBackPressed();
}

Фрагмент сведений о подсказке:

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
  View view = inflater.inflate(R.layout.fragment_tip_details, container, false);
        title = view.findViewById(R.id.textViewTipTitle);
        description = view.findViewById(R.id.textViewDescription);
        bundle = getArguments();
        tipTitle = bundle.getString("Title");
        tipDes = bundle.getString("Des");

title.setText(tipTitle);
        description.setText(tipDes);


        return view;

    }

1 Ответ

0 голосов
/ 07 мая 2020

Действия и фрагменты имеют свои собственные жизненные циклы. Когда вы загрузили вторую активность. Первое действие было убито, чтобы освободить место для второго. когда вы нажимаете кнопку возврата, второй убивается, а первый раздувается. Вам необходимо go вернуться к своему коду и упростить структуру навигации или опубликовать код навигации для получения дополнительной помощи. Ура.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...