指定的子项已有父项。您必须首先在孩子的父母上调用removeView

时间:2017-07-10 06:56:15

标签: android

我遇到了以下错误 指定的子项已有父项。您必须首先在孩子的父母身上调用removeView()。

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        web  = (WebView)findViewById(R.id.webView);

        ln1=(LinearLayout) findViewById(R.id.ln1);

        WebSettings settings =  web.getSettings();
        settings.setJavaScriptEnabled(true);

        web.loadUrl("http://github.tkddnjsdja.tk/");
        web.setWebViewClient(new myWebClient());

        web.setWebChromeClient(new WebChromeClient(){

            public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) {
                mUploadMessage = uploadMsg;
                Intent i = new Intent(Intent.ACTION_GET_CONTENT);
                i.addCategory(Intent.CATEGORY_OPENABLE);
                i.setType("image/*");
                MainActivity.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MainActivity.FILECHOOSER_RESULTCODE);

            }



        });

        setContentView(web);

    }

看起来像setcontentView是个问题 但不知道如何解决这个问题并让它发挥作用。

1 个答案:

答案 0 :(得分:0)

您会收到异常,因为您尝试添加已添加的视图。

当您致电setContentView(R.layout.activity_main);时,您的布局会添加到应用程序的窗口(根视图)中。然后你做web = (WebView)findViewById(R.id.webView); - 获取WebView并进行处理。 webView已添加到您的屏幕中。

之后,您尝试再次添加它:setContentView(web);。您不应该这样做,因为您的webView已经添加。

也请拨打此行

web.loadUrl("http://github.tkddnjsdja.tk/");

之后将clicnts设置为WebView,而不是之前的