。。。。。
private Dialog dialogM;
。。。。。。
showDialog(0);
。。。。
@Override
protected Dialog onCreateDialog(int id) {
if(id==0)
{
ListView listView = new ListView(this);
listView.setAdapter((ListAdapter) FileManager.getAdapter(this, listView, path));
listView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
LinearLayout ll = (LinearLayout) arg1;
// 获取其中的TextView
TextView typeview = (TextView) ll.getChildAt(3);
if (typeview != null &&"0".equals(typeview.getText())) {
TextView pathview = (TextView) ll.getChildAt(2);
path = pathview.getText().toString();
dialogM.cancel();
}
else if(typeview != null &&"1".equals(typeview.getText()))
{
TextView pathview = (TextView) ll.getChildAt(2);
path = pathview.getText().toString();
dialogM.dismiss();
showDialog(0);
}
}
});
dialogM= new AlertDialog.Builder(this).setTitle("xx").setView(listView).create();
return dialogM;
}
return super.onCreateDialog(id);
}
创建了dialog后 不管调用cancel()还是dismiss(),再次调用showDialog(0)时不进入onCreateDialog()方法。显示的内容还是之前的内容,本来是一个文件目录显示的dialog,要重新根据path查找目录下的目录和文件显示的。
OnCreateDialog方法只运行一次,以后的打开dialog会调用onPrepareDialog方法,所以你要改变dialog的内容就应该这个方法里面改.下面的代码是我的demo代码,这些代码在onCreateDialog里面就只会显示dddd,而在onPrepareDialog方法里面就会一直变化.
protected void onPrepareDialog(int id, Dialog dialog) {
// TODO Auto-generated method stub
super.onPrepareDialog(id, dialog);
if(isClick)
{
TextView tv1 = new TextView(this);
tv1.setText("测试得得得得得得得得得得得 ");
dialog.setContentView(tv1);
isClick = false;
}else
{
TextView tv1 = new TextView(this);
tv1.setText("ddddddddddddddddddddd ");
dialog.setContentView(tv1);
isClick = true;
}
Log.d("ddd", ""+isClick);
}