2

onClickListenerとの両方を実装しようとすると、次のエラーが発生しonLongClickListenerますRelativeLayout

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();

}
});

アクティビティを初めて開いたときは、何度でもロングクリックできます。しかし、他のボタン (ここで説明されているものだけでなく) をクリックすると、再度ロングクリックを試みると、アプリケーションがクラッシュします。

私は本当にあなたの助けに感謝します. ありがとう :)

4

1 に答える 1

2

各ビューは 1 つの親のみ許可されます。どうやらclickViewすでに持っているので、呼び出すsetView(clickView)とエラーがスローされます。修正の 1 つは、次を追加することです。

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

両方のリスナーの先頭に。これは「孤立」clickViewするため、AlertDialog に追加できます。

于 2012-10-19T21:13:44.647 に答える