Как передать данные из деятельности во фрагмент через RecyclerViewAdapter? - PullRequest
0 голосов
/ 16 апреля 2019

Я использую startActivityForResult на адаптере вида переработчика. А затем я хочу, чтобы при нажатии на спину из нового действия передавалось значение фрагменту, к которому прикреплено представление повторного цикла.

Я пробовал:

RecyclerViewAdapter.java

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, final int i) {


    myViewHolder.parentLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(mContext, mData.get(i).getText(), Toast.LENGTH_SHORT).show();

            Intent intent = new Intent(mContext, IntentActivity.class);

            Bundle bundle = new Bundle();
            bundle.putInt("Image",mData.get(i).getPhoto());
            bundle.putString("WebSite",mData.get(i).getWebSite());
            bundle.putInt("Heart",mData.get(i).getHeart());
            bundle.putInt("i",i);
            intent.putExtras(bundle);
            //mContext.startActivity(intent);
            ((Activity) mContext).startActivityForResult(intent,2);

        }
    });


    myViewHolder.love.setImageResource(mData.get(i).getHeart());
    myViewHolder.text.setText(mData.get(i).getText());
    myViewHolder.image.setImageResource(mData.get(i).getPhoto());
}

IntentActivity.java

@Override
public void onBackPressed() {
    super.onBackPressed();
    Toast.makeText(getApplication(),"back pressed", Toast.LENGTH_SHORT).show();

    Intent returnIntent = getIntent();
    returnIntent.putExtra("position",i);
    returnIntent.putExtra("isLoved",loved);
    setResult(RESULT_OK, returnIntent);
    finish();
}

Затем в классе Fragment я делаю это:

PageOne.java

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 2) {
        if (resultCode == RESULT_OK) {
            String result = data.getStringExtra("isLoved");

            Toast.makeText(getActivity(),result,Toast.LENGTH_SHORT).show();


        }
    }
}

Ничего не происходит и Toast.makeText(getActivity(),result,Toast.LENGTH_SHORT).show(); не выскакивает.

1 Ответ

0 голосов
/ 16 апреля 2019

Весьма вероятно, что onActivityResult вашей активности поглотит событие, убедитесь, что вы набрали super.onActivityResult в своей активности, например:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data)
    ...
}
...