removeView()在imageview上的孩子的父第一个错误

时间:2014-07-24 06:28:59

标签: android

在ImageView中显示图像。点击该图像时,我显示警告对话框,并以更大的尺寸显示相同的图像,第一次正常工作,但第二次点击该图像时出现以下错误我的logcat,任何帮助。

07-24 05:20:39.657:E / AndroidRuntime(363):java.lang.IllegalStateException:指定的子节点已经有父节点。您必须首先在孩子的父母身上调用removeView()。

这是我的代码......

公共类MainActivity扩展了Activity {

private Button btn;
ImageView image1;
AlertDialog.Builder alert;
int imgvi=R.drawable.rose;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    image1=(ImageView)findViewById(R.id.imgfull);
    image1.setImageResource(imgvi);
    alert=new AlertDialog.Builder(this);
    LayoutInflater inflater=MainActivity.this.getLayoutInflater();
    View layouti=inflater.inflate(R.layout.imageview,null);
    alert.setView(layouti);
    final ImageView img=(ImageView) layouti.findViewById(R.id.imgfull);
    alert.setTitle("FullImage");
    img.setImageResource(imgvi);
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
        }
    });
    image1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

        alert.show();   

        }
    });



}

}

2 个答案:

答案 0 :(得分:0)

这是因为您的Dialog上的ImageView已经设置了图像。

在设置图像之前调用它 -

yourimageview.setImageResource(0);

希望这有效。

答案 1 :(得分:0)

请尝试这种方式,希望这有助于您解决问题。

<强> activity_main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ImageView
        android:id="@+id/imgfull"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:adjustViewBounds="true"/>

</LinearLayout>

<强> imageview.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imgfull"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"/>

</LinearLayout>

<强> MainActivity.java

public class MainActivity extends Activity{

    ImageView image1;
    private int image = R.drawable.ic_launcher;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        image1=(ImageView)findViewById(R.id.imgfull);
        image1.setImageResource(image);


        image1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
              showImage(image);
            }
        });



    }

    public void showImage(int image){
        AlertDialog.Builder alert =new AlertDialog.Builder(this);

        View view = LayoutInflater.from(this).inflate(R.layout.imageview, null);
        alert.setView(view);
        ImageView img=(ImageView) view.findViewById(R.id.imgfull);
        alert.setTitle("FullImage");
        img.setImageResource(image);
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

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

    }
}