Android 无法在阵列适配器中创建警报对话框

Android 无法在阵列适配器中创建警报对话框,android,android-fragments,Android,Android Fragments,我有Fragment类,它有ListView,由数组适配器实现。当单击列表视图时,我想显示确认对话框。下面是我的阵列适配器源代码 Context _context; int layoutResourceId; List<OrderListInfo> _listOrderListInfoAdapter = new ArrayList<OrderListInfo>(); private String ButtonFlag = ""; Activity _activity;

我有
Fragment
类,它有
ListView
,由数组适配器实现。当单击列表视图时,我想显示确认对话框。下面是我的阵列适配器源代码

Context _context;
int layoutResourceId;
List<OrderListInfo> _listOrderListInfoAdapter = new ArrayList<OrderListInfo>();
private String ButtonFlag = "";
Activity _activity;

public OrderDetailListAdatper(Context context, int Resource,
        List<OrderListInfo> listorderlistInfo) {
    super(context, Resource, listorderlistInfo);
    _context = context;
    _listOrderListInfoAdapter = listorderlistInfo;
    layoutResourceId = Resource; 

}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View row = convertView;
    ViewHolder holder = null;
    LayoutInflater inflater = (LayoutInflater) _context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (row == null) {
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new ViewHolder();
        TextView txtProductCode = (TextView) row
                .findViewById(R.id.txtProductCode);
Button btnDelete = (Button) row.findViewById(R.id.btnRemove);
holder.txtProductCode = txtProductCode;
row.setTag(holder);
    } else {holder = (ViewHolder) row.getTag();     }

OrderListInfo _orderListInfoAdapter = _listOrderListInfoAdapter
            .get(position);
    holder.txtProductCode.setText(_orderListInfoAdapter.getProductCode()
            .toString() 
            );

holder.btnDelete.setOnClickListener(new OnClickListener() { 
        @Override
        public void onClick(View view) {                

            AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext());

            alert.setMessage("Do you want to delete?");
                alert.setNegativeButton("CANCEL",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(
                                DialogInterface dialog,
                                int whichButton) {
                            dialog.cancel();
                        }
                    });
            alert.setPositiveButton("OK",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(
                                DialogInterface dialog,
                                int whichButton) {

                            OrderDetailListAdatper.this._listOrderListInfoAdapter
                                    .remove(position);                          OrderDetailListAdatper.thisnotifyDataSetChanged();                                  
                        }
                    });
            AlertDialog alertDialog = alert.create();
            alertDialog.show();
        }
    });
}
    return row;
  }
我得到的错误是

     android.view.WindowManager$BadTokenException: 
无法添加窗口--标记null不适用于应用程序。我怎样才能解决这个问题

OrderDetailListAdatper adapter = new OrderDetailListAdatper(Yourclass.this,Resource,
    listorderlistInfo);
//set your adapter..
在您的getview中

holder.btnDelete.setOnClickListener(new OnClickListener() { 
    @Override
    public void onClick(View view) {                

        AlertDialog.Builder alert = new AlertDialog.Builder((Activity)_context);

        alert.setMessage("Do you want to delete?");
            alert.setNegativeButton("CANCEL",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(
                            DialogInterface dialog,
                            int whichButton) {
                        dialog.cancel();
                    }
                });
        alert.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(
                            DialogInterface dialog,
                            int whichButton) {

                        OrderDetailListAdatper.this._listOrderListInfoAdapter
                                .remove(position);                          OrderDetailListAdatper.thisnotifyDataSetChanged();                                  
                    }
                });
        alert.create().show(); // btw show() creates and shows it..
    }
});

此外,我认为alert dialog-(builder)已被弃用,请将alertdialog放入dialogfragment,或创建dialogfragment以供确认。

是否已将上下文传递给构造函数中的arrayadapter?请使用
getContext
而不是
View.getContext
。。或您指定的上下文。。并确保您的上下文指定了activity@PramodYadav,@Elltz我已经发布了我的构造函数。我试图更改getContext而不是View.getContext,但仍然出现相同的错误。请仅使用getContext()而不是View.getContext()_context@PramodYadav,无效果,仍然会出错。
holder.btnDelete.setOnClickListener(new OnClickListener() { 
    @Override
    public void onClick(View view) {                

        AlertDialog.Builder alert = new AlertDialog.Builder((Activity)_context);

        alert.setMessage("Do you want to delete?");
            alert.setNegativeButton("CANCEL",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(
                            DialogInterface dialog,
                            int whichButton) {
                        dialog.cancel();
                    }
                });
        alert.setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(
                            DialogInterface dialog,
                            int whichButton) {

                        OrderDetailListAdatper.this._listOrderListInfoAdapter
                                .remove(position);                          OrderDetailListAdatper.thisnotifyDataSetChanged();                                  
                    }
                });
        alert.create().show(); // btw show() creates and shows it..
    }
});