我的 DialogFragment :
中有下一个代码@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Log.i(getClass().getName(), "onCreateDialog");
final FileSystemAdapter adapter = getAdapter();
adapter.showFS(null);
AlertDialog b = new AlertDialog.Builder(getActivity())
.setTitle(title)
.setCancelable(false)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//some actions
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dismiss();
}
})
.setAdapter(adapter, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
adapter.showFS(adapter.getItem(i));
}
})
.create();
return b;
}
点击列表元素后,最后 onClick 方法正在调用,然后对话框正在关闭。
如何阻止此行为并保持对话框打开,直到关闭方法调用?
答案 0 :(得分:7)
您可以创建一个新的ListView并将其设置为AlertDialog.Builder中的自定义视图,并将您的OnClickListener代码放入listView中的OnItemClickListener。尝试这样的事情:
ListView listView = new ListView(this);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new ListView.OnItemClickListener() {
public void onItemClick(AdapterView<?> listView, View itemView, int position, long itemId) {
adapter.showFS(adapter.getItem(position));
}
});
AlertDialog b = new AlertDialog.Builder(getActivity())
.setTitle(title)
.setCancelable(false)
.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//some actions
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dismiss();
}
})
.setView(listView)
.create();
return b;