【问题标题】:How to call dialog fragment in onclicklistener in recycler adapter如何在回收器适配器的 onclicklistener 中调用对话框片段
【发布时间】:2017-08-07 18:34:10
【问题描述】:

我有一个回收器适配器,每个都显示在片段中。当我单击项目时,我想要那个打开的对话框片段。 getsupportfragmentmanager 不调用他以红色突出显示。如何打开对话框片段。请帮助我,我对此有错误的逻辑。

public class TehcnikMyProfileAdapter extends RecyclerView.Adapter<TehcnikMyProfileAdapter.RequestFriendViewHolder> {

List<Vehicles> listVehicles = Collections.emptyList();
Context context;

public TehcnikMyProfileAdapter(List<Vehicles> list, Context context) {
    this.listVehicles = list;
    this.context = context;
}

@Override
public RequestFriendViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    //Inflate the layout, initialize the View Holder
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout_technik, parent, false);
    return new RequestFriendViewHolder(v);
}

@Override
public void onBindViewHolder(RequestFriendViewHolder holder, int position) {

    holder.titleFirm.setText(listVehicles.get(position).getFirmName());
    holder.titleModel.setText(listVehicles.get(position).getModelName());


    holder.titleYear.setText(String.valueOf(listVehicles.get(position).getYear()));
//        holder.countPhoto.setText(String.valueOf(listVehicles.get(position).getPhotos().size()));
        View.OnClickListener clickListener = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               // Intent myIntent = new Intent(context, FriendProfileActivity.class);
              //  myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              //  myIntent.putExtra("id", mUserList.get(position).getId());
            //    context.startActivity(myIntent);
            }
        };
        holder.imgvMooreOptions.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentManager manager = context.getSupportFragmentManager();
                GarageOptionDialogFragment myDialogFragment = new GarageOptionDialogFragment();
                myDialogFragment.show(manager, "dialog");
            }
        });
        holder.cv.setOnClickListener(clickListener);
    }
    @Override
    public int getItemCount() {
        //returns the number of elements the RecyclerView will display
        return listVehicles.size();
    }

    @Override
    public void onAttachedToRecyclerView(RecyclerView recyclerView) {
        super.onAttachedToRecyclerView(recyclerView);
    }

}

【问题讨论】:

  • 你能展示你写的代码/逻辑吗?
  • 我在适配器中的代码

标签: android android-fragments android-recyclerview


【解决方案1】:

如果你正在使用 AppCombatActivity

android.support.v4.app.FragmentManager manager = ((AppCompatActivity) context).getSupportFragmentManager();

【讨论】:

  • 当点击项目有下一个错误时没有帮助:android.util.AndroidRuntimeException:添加内容之前必须请求窗口功能
【解决方案2】:

对于 AppCompatActivity 使用这个:

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

EventRegFragmentDialog eventRegFragment= new EventRegFragmentDialog();

  eventRegFragment.show(manager, "Edit Fragment");

请导入这个:

import android.support.v4.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2012-06-14
    • 2017-04-28
    • 2019-11-29
    • 1970-01-01
    相关资源
    最近更新 更多