Search code examples
android-recyclerviewdialogfragment

How to start dialogFragment from RecyclerView Adapter


I want to start a dialogFragment on recycler view item click in RecyclerView Adapter

I tried

FragmentManager fr = ((Activity)context).getFragmentManager();
AnswersDialogFragment msgDialog = new AnswersDialogFragment();
msgDialog.show(fr, "Dialog");

but i get casting error

java.lang.ClassCastException: android.view.ContextThemeWrapper cannot be cast to android.support.v4.app.FragmentActivity

I want to start the dialog fragment on item click

@Override
    public AnswersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


        View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.answercard, parent, false);
        AnswersViewHolder evh = new AnswersViewHolder(v, mListener);
        return evh;
    }
@Override
    public void onBindViewHolder(AnswersViewHolder holder, int position) {
        int viewType = getItemViewType(position);

        if(viewType==COMMENT_TYPE){
            final Comments item = (Comments) commentsList.get(position);
            holder.UserName.setText(Html.fromHtml(item.getUserName()));
            holder.CommentText.setText(Html.fromHtml(item.getCommentText()));

        }else{
            final Replys replyitem = (Replys) commentsList.get(position);
            holder.UserName.setText(Html.fromHtml(replyitem.getReplyAuthor()));
            holder.CommentText.setText(Html.fromHtml(replyitem.getReplyBody()));
        }

    }

imgLikeComment.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    FragmentManager fr = ((Activity)context).getFragmentManager();
                    AnswersDialogFragment msgDialog = new AnswersDialogFragment();
                    msgDialog.show(fr, "Dialog");
});

AnswersDialogFragment.java

public class AnswersDialogFragment extends DialogFragment {

    ArrayList<Object> answersList;

    RecyclerView recyclerView;
    AnswersAdapter recyclerViewadapter;
    RecyclerView.LayoutManager recyclerViewlayoutManager;

    ImageView sendReply ;
    EditText commentInput;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.DialogStyle);
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.nestedcomments, container, false);
..... etc

The Item click is working fine , i just can't start the fragment


Solution

  • try to use SupportFragmentManager instead

    FragmentManager manager = ((AppCompatActivity)context).getSupportFragmentManager();