Действие по отправке данных фрагмента и доступ к массиву во фрагменте

У меня есть fragment, который присутствует в Bottom Navigation Activity. Fragments содержит специальный recyclerview. Когда я нажимаю кнопку комментария, открывается другое действие для комментариев. Ниже находится переходник RecyclerView.

    viewholder.commentlay.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
                //commenttofragment.clear();
                Intent comment = new Intent(fp, com.fooddoof.fuddict.comment.class);
                int id = dusers.get(position).getId();
                int comcount = dusers.get(viewholder.getAdapterPosition()).getCommentcount();
                comment.putExtra("id",id);
                comment.putExtra("ownerid",userid);
                comment.putExtra("maincommentposition",position);
                comment.putExtra("commentcountonposition", comcount);
                fp.startActivityForResult(comment,1);

        }
    });

В активности комментариев после выполнения некоторых задач мне нужно отправить некоторые значения на этот fragment. Поэтому я отменяю метод OnBackPressed. Я создал в Fragment метод для его получения.

@Override
public void onBackPressed()
{
    Bundle args = new Bundle();
    args.putInt("maincommentcount",maincommentcount);
    args.putInt("maincommentposition", maincommentposition);
    FolowersPost f = new FolowersPost();
    f.getdatafromcomment(args);
    finish();
}

Я получаю его, как показано ниже, в Fragment.

public void getdatafromcomment(Bundle args)
{
    int count = args.getInt("maincommentcount");
    int p=args.getInt("maincommentposition",999999999);
    Log.e("Shiva","count--->"+count+"p--->"+p);

}

Значения получены, но мне нужно получить доступ к arraylist в Fragement, который передается в Adapter для отображения recyclerView. Но я не могу получить к нему доступ, когда возвращаюсь к fragment, который присутствует в методе под OnCreateView. Я попытался получить к нему доступ с помощью OnResume, но работает только некоторое время. Я также объявил Arraylist как глобальную переменную.

вы хотите отправить данные во фрагмент onBackPressed активности комментариев ??

Rumit Patel 21.11.2018 13:17

@RumitPatel - я могу отправлять данные из активности комментариев во фрагмент, но я хочу обновить адаптер во фрагменте, используя значение, которое я отправил из активности комментариев. Для этого мне нужно получить доступ к arraylist, который присутствует во фрагменте после получения данных. Я не могу получить доступ к arraylist после завершения упражнения.

user2269164 21.11.2018 16:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
53
1

Ответы 1

Вы уже используете startActivityForResult., теперь вам просто нужно использовать onActivityResult.

Но вам просто нужно начать активность с фрагмента, а не с адаптера.

onClick из фрагмента:

Intent comment = new Intent(getActivity(), com.fooddoof.fuddict.comment.class);
startActivityForResult(comment, 1);

onBackPressed в ваших комментариях:

    @Override
    public void onBackPressed() {
        Intent returnIntent = new Intent();
        returnIntent.putExtra("maincommentcount",10);
        returnIntent.putExtra("maincommentposition",20);
        setResult(Activity.RESULT_OK,returnIntent);
        finish();        
//        super.onBackPressed();
    }

onActivityResult во фрагменте:

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1) {
            if (resultCode == Activity.RESULT_OK) {
                int mMaincommentcount = data.getIntExtra("maincommentcount", 0);
                int mMaincommentposition = data.getIntExtra("maincommentposition", 0);

                System.out.println("mMaincommentcount = " + mMaincommentcount + ", mMaincommentposition = " + mMaincommentposition);
            }
        }
    }

Я получаю значения без указанной выше опции. Проблема, с которой я столкнулся, заключается в том, что я не могу получить доступ к arraylist внутри метода.

user2269164 22.11.2018 08:53

но, согласно моему ответу, вы точно сможете получить доступ к своему списку массивов в onActivityResult..

Rumit Patel 22.11.2018 09:07

Нет, я не могу получить к нему доступ после завершения действия.

user2269164 22.11.2018 10:35

вы используете startActivityForResult от фрагмента или от адаптера?

Rumit Patel 22.11.2018 10:51

да .. Пожалуйста, проверьте мои вопросы для подробного объяснения

user2269164 22.11.2018 11:15

В вашем вопросе я вижу, что вы используете startActivityForResult от адаптера. что вы не должны. вы должны использовать его из фрагмента.

Rumit Patel 22.11.2018 11:19

Другие вопросы по теме