Java 单击并长单击侦听器抛出IllegalStateException

Java 单击并长单击侦听器抛出IllegalStateException,java,android,exception,button,onclicklistener,Java,Android,Exception,Button,Onclicklistener,我在尝试为相对性应用程序实现onClickListener和onLongClickListener时遇到此错误: 10-19 17:49:31.400: E/AndroidRuntime(30886): FATAL EXCEPTION: main 10-19 17:49:31.400: E/AndroidRuntime(30886): java.lang.IllegalStateException: The specified child already has a parent. You mu

我在尝试为
相对性应用程序实现
onClickListener
onLongClickListener
时遇到此错误:

10-19 17:49:31.400: E/AndroidRuntime(30886): FATAL EXCEPTION: main
10-19 17:49:31.400: E/AndroidRuntime(30886): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
这是代码的一部分:

RelativeLayout meals_layout = (RelativeLayout) view
.findViewById(R.id.meals);      

meals_layout.setOnLongClickListener(new OnLongClickListener() { 
    @Override
    public boolean onLongClick(View v) {

        AlertDialog.Builder builder = new AlertDialog.Builder(
                JournalActivity.this);
        builder.setTitle(R.string.meal_delete); 
        builder.setView(clickView);

        builder.setPositiveButton(R.string.string_delete,
                new DialogInterface.OnClickListener() {

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

            }

        });
        builder.setNegativeButton(R.string.string_cancel,
                new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog,
                    int which) {
                // Do nothing
                dialog.dismiss();
            }
        });

        builder.create().show();
        return false;
    }
});

meals_layout.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        AlertDialog.Builder builder = new AlertDialog.Builder(
                JournalActivity.this);
        builder.setTitle(R.string.meal_edit); // al que hacerlo bonito
        builder.setView(clickView);

        builder.setPositiveButton(R.string.string_edit,
                new DialogInterface.OnClickListener() {
        }
    });

        builder.setNegativeButton(R.string.string_cancel,
                new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog,
                    int which) {
                // Do nothing
                dialog.dismiss();
            }
        });


        builder.create().show();

}
});
第一次打开“活动”时,我可以任意多次长按。但是当我点击任何其他按钮时(不仅仅是这里的那个),如果我再次尝试长点击。。。应用程序崩溃

我将非常感谢你的帮助。
谢谢:)

每个视图只允许一个父视图。显然,
clickView
已经有了一个,所以当您调用
setView(clickView)
时,它会抛出错误。一个解决方案是添加:

((GroupView) clickView.getParent()).removeView(clickView);

致两位听众的开头。这将“孤立”
clickView
,以便将其添加到AlertDialog中。

您是在您的
onCreate()
中还是在您的
onResume()
中执行此操作的?使用一个单独的方法,但它是从onCreate()
((组视图)clickView.getParent())调用的。使用try/catch的removeView(clickView)
,它工作得非常好。