Активность для фрагмента, отправка данных и доступ к массиву во фрагменте - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть 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 как глобальную переменную.

1 Ответ

0 голосов
/ 22 ноября 2018

Вы уже используете 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);
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...