如何用recycleview修复对话框错误?

时间:2019-04-17 06:56:21

标签: dialog android-alertdialog recycler-adapter

我正在回收适配器中设置对话框,但是它给出了错误。

  

android.view.WindowManager $ BadTokenException:无法添加窗口-令牌null不适用于应用程序。

我搜索了很多,但是所有答案都说将上下文更改为getActivity,但是在回收适配器中,我别无选择。

我在google中搜索了很多内容,但是堆栈溢出,但是没有找到解决方法

@NonNull
@Override
public StopRecycleAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view=LayoutInflater.from(context1).inflate(R.layout.bus_recycle_lyout,viewGroup,false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull final StopRecycleAdapter.MyViewHolder viewHolder, int i) {
    item1=item.get(i);
    viewHolder.stop.setText(item1.getStop());
    viewHolder.stop_serial.setText(item1.getStopTitle());
    mdialog=new Dialog(context1);
    mdialog.setContentView(R.layout.update_stop_dialog);
    mdialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    viewHolder.linearLayout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try{
                EditText update_stop=mdialog.findViewById(R.id.update_stop);
                update_stop.setText("hlw");
                mdialog.show();
            }catch (Exception e){
                Toast.makeText(context1,"error  "+e,Toast.LENGTH_SHORT).show();

            }
        }
    });
}

@Override
public int getItemCount() {
    return item.size();
}

我希望当用户单击回收视图时,对话框会打开。

1 个答案:

答案 0 :(得分:0)

您可以像这样检查哪里有异常

telnet

if (alertDialog != null && alertDialog.isVisible()) {
}