我有listview
包含元素和按钮删除,当我点击此按钮时我想显示dialog
然后确认或不删除第th个元素,问题是我无法在listview
上显示对话框,我对上下文有疑问。
public void onClick(View v) {
if(v.getId()==R.id.Supprimer){
AlertDialog.Builder builder = new
AlertDialog.Builder(getContext());
builder.setCancelable(true);
builder.setTitle("Suppression d'un rendez-vous");
builder.setMessage("Voulez vous supprimer ce rendez-vous");
builder.setNegativeButton("Non", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.cancel();
}
});
builder.setPositiveButton("Oui", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//alertTextView.setVisibility(View.VISIBLE);
GestBDD.suppRDV(rdv,getContext());
adapter.remove(getPosition(rdv));
cl.notifyDataSetChanged();
Toast.makeText(getContext(),"Rendez vous
supprimé",Toast.LENGTH_LONG).show();
}
});
builder.show();
}
}
错误发生在builder.show()行,它说
W/System.err: at
com.example.hp.bendaoudtest.RDVAdapter.onClick(RDVAdapter.java:110)
答案 0 :(得分:2)
AlertDialog仅接受活动上下文而非应用程序上下文。如果您的getContext()
获得应用程序上下文,您将收到错误消息。您的getContext()
方法应返回活动上下文,可以通过发送this
作为构造函数参数从您正在使用的活动类进行实例化。不要将getApplicationContext()
作为构造函数参数发送。例如:
RVDAdapter rvdadapter = new RVDAdapter(this);
答案 1 :(得分:1)
使用
select t.*,j.* from yourtable t cross apply parseJSON(t.jsonColumn) j
和
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
而不是AlertDialog dialog = builder.create();
dialog.show();
以获取更多信息
https://developer.android.com/guide/topics/ui/dialogs.html