gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 02:28:36 24 4
gpt4 key购买 nike

我有 Fragment 类,其中有 ListView 由 Array Adapter 实现。单击 ListView 时,我想显示确认对话框。以下是我的 Array Adapter 源代码。

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;
}

调用这段代码后

    (AlertDialog alertDialog = alert.create();) ,

我收到错误信息

     android.view.WindowManager$BadTokenException: 

无法添加窗口 - token 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..
}
});

我还认为警报对话框-(构建器)是旧的 skulled-deprecated,要么将 alertdialog 放在 dialogfragment 中,要么创建一个 dialogfragment 以供您确认..

关于android - 无法在阵列适配器中创建警报对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27596502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com