正确删除View()用法

时间:2015-02-03 11:00:33

标签: android android-listview android-dialog

有人可以解释在这种情况下将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);
    };

0 个答案:

没有答案