有人可以解释在这种情况下将removeView()放在哪里吗?
private void regListClickCallback() {
ListView myList = (ListView) findViewById(R.id.gamePlayList);
LayoutInflater li = LayoutInflater.from(this);
scorCh = li.inflate(R.layout.score_change_layout, null);
myList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long idInDB) {
AlertDialog.Builder aDB = new AlertDialog.Builder(context);
aDB.setView(scorCh);
aDB.setCancelable(false).setMessage(i).setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
AlertDialog aD = aDB.create();
aD.show();
}
});
}
当我运行应用程序时,我可以单击其中一个列表项并获取对话框,但当我再次单击同一项目或任何其他项目时,我得到
java.lang.IllegalStateException:指定的子级已有父级。您必须先在孩子的父母身上调用removeView()。
我试图将以下代码放在onCreate和这个regListClickCallback中。
if(scorCh!=null)
{
ViewGroup parent = (ViewGroup) scorCh.getParent();
if(parent!=null)
parent.removeView(scorCh);
};