0

当我执行下面的脚本时,我得到了错误The specified child already has a parent. You must call removeView() on the child's parent first.

public void EditDaytoDayTask(Bundle bundle) {
        Log.i(TAG,"Inside editdaytoday");
        //((ViewGroup)view.getParent()).removeView(view);

        final String taskName=bundle.getString("TASKDAYTODAY");
        Log.i(TAG,"TAsknamedate:"+taskName+" "+date);
        AlertDialog.Builder alertViewTaskDescription=new AlertDialog.Builder(getActivity());
        LayoutInflater inflaterViewTaskDescription=(LayoutInflater)getActivity().getSystemService(getActivity().LAYOUT_INFLATER_SERVICE);
         viewTaskWithDescription=(View)inflaterViewTaskDescription.inflate(R.layout.viewtaskwithdescriptionlayout,null,false);

        TextView textviewTask=(TextView)viewTaskWithDescription.findViewById(R.id.taskidDaytoDayView);
        TextView textviewDescription=(TextView)viewTaskWithDescription.findViewById(R.id.descriptionidDaytoDayView);
        textviewTask.setText(taskName);
        final String descriptionTask=objTaskDb.FetchDescriptionTask(date,taskName);
        textviewDescription.setText(descriptionTask);
        alertViewTaskDescription.setView(viewTaskWithDescription);
        alertViewTaskDescription.setPositiveButton("EDIT",new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //((ViewGroup)view.getParent()).removeView(view);

                AlertDialog.Builder alertEditTaskDescription=new AlertDialog.Builder(getActivity());

                LayoutInflater inflaterEditTaskDescription=(LayoutInflater)getActivity().getSystemService(getActivity().LAYOUT_INFLATER_SERVICE);

                View viewEditTaskDescription=(View)inflaterEditTaskDescription.inflate(R.layout.edittaskwithdescriptionlayout,null,false);
                //((ViewGroup)viewEditTaskDescription.getParent()).removeAllViews();
                EditText edittextTask=(EditText)viewEditTaskDescription.findViewById(R.id.taskidDaytoDayEdit);
                EditText edittextDescription=(EditText)viewEditTaskDescription.findViewById(R.id.descriptionidDaytoDayEdit);
                edittextTask.setText(taskName);
                edittextDescription.setText(descriptionTask);
                alertEditTaskDescription.setView(edittextDescription);
                alertEditTaskDescription.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                    }
                });

        alertViewTaskDescription.show();

    }
}

如何解决这个错误?任何帮助将不胜感激,谢谢。

4

2 回答 2

1

嗨,我发现了这个错误并解决了。这是我的简单错误,在 setview 中添加编辑文本而不是视图。我改变了

alertEditTaskDescription.setView(viewEditTaskDescription);

instead of this

 alertEditTaskDescription.setView(edittextDescription);
于 2013-06-28T07:35:14.817 回答
0

它对我来说工作正常..

public void EditDaytoDayTask() {
        // Log.i(TAG,"Inside editdaytoday");
        //((ViewGroup)view.getParent()).removeView(view);

        //final String taskName=bundle.getString("TASKDAYTODAY");
        //Log.i(TAG,"TAsknamedate:"+taskName+" "+date);
        final AlertDialog.Builder alertViewTaskDescription=new AlertDialog.Builder(hostActReference);
        LayoutInflater inflaterViewTaskDescription=(LayoutInflater)hostActReference.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View viewTaskWithDescription = (View)inflaterViewTaskDescription.inflate(R.layout.pdf_save_dialog,null,false);

        //TextView textviewTask=(TextView)viewTaskWithDescription.findViewById(R.id.taskidDaytoDayView);
        //TextView textviewDescription=(TextView)viewTaskWithDescription.findViewById(R.id.descriptionidDaytoDayView);
        //textviewTask.setText(taskName);
        //final String descriptionTask=objTaskDb.FetchDescriptionTask(date,taskName);
        // textviewDescription.setText(descriptionTask);
        alertViewTaskDescription.setView(viewTaskWithDescription);
        alertViewTaskDescription.setPositiveButton("EDIT",new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //((ViewGroup)view.getParent()).removeView(view);

                AlertDialog.Builder alertEditTaskDescription=new AlertDialog.Builder(hostActReference);

                LayoutInflater inflaterEditTaskDescription=(LayoutInflater)hostActReference.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                View edittextDescription=(View)inflaterEditTaskDescription.inflate(R.layout.save_dialog,null,false);
                //((ViewGroup)viewEditTaskDescription.getParent()).removeAllViews();
                //EditText edittextTask=(EditText)viewEditTaskDescription.findViewById(R.id.taskidDaytoDayEdit);
                //  EditText edittextDescription=(EditText)viewEditTaskDescription.findViewById(R.id.descriptionidDaytoDayEdit);
                //edittextTask.setText(taskName);
                //edittextDescription.setText(descriptionTask);
                alertEditTaskDescription.setView(edittextDescription);
                alertEditTaskDescription.setPositiveButton("OK", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {


                    }
                });

                alertEditTaskDescription.setNegativeButton("Cancel", null);

                alertEditTaskDescription.create().show();

            }
        });

        alertViewTaskDescription.setNegativeButton("Cancel", null);


        alertViewTaskDescription.create().show();


    }
于 2013-06-27T11:55:36.850 回答