单个Activity中的多个WebView

时间:2015-11-17 13:12:07

标签: java android webview

我正在使用WebViews来显示多个GIF动画。 这是我的代码:

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_myactivity);

        Intent myintent = getIntent();
        String myWord = myintent.getStringExtra("word");

        LinearLayout linearLayout= new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        linearLayout.setLayoutParams(new AbsListView.LayoutParams(
                AbsListView.LayoutParams.MATCH_PARENT,
                AbsListView.LayoutParams.MATCH_PARENT));

        for(int i = 0; i < myKelime.length(); i++)
        {

            WebView wView = new WebView(this);
            //setting image resource
            switch (myWord.charAt(i)){
                case 'a':         wView.loadUrl("file:///android_asset/a.gif");
                    setContentView(wView);
                    break;
                case 'b' :         wView.loadUrl("file:///android_asset/b.gif");
                    setContentView(wView);
                    break;
                case 'c' :         wView.loadUrl("file:///android_asset/c.gif");
                                  setContentView(wView); 
                                                              break;

//goes until z

}
            wView.setLayoutParams(new AbsListView.LayoutParams(
                    AbsListView.LayoutParams.MATCH_PARENT,
                    AbsListView.LayoutParams.WRAP_CONTENT));
            linearLayout.addView(wView);
            //make visible to program
            setContentView(linearLayout);


        }
    }

当我运行此代码时,我收到此错误:

  

无法开始活动   ComponentInfo {com.example.mypc.myapp / com.example.mypc.myapp.MyActivity}:   java.lang.IllegalStateException:指定的子节点已经有了   家长。您必须首先在孩子的父母身上调用removeView()。

当我使用ImageView而不是WebView时,这是有效的。我怎样摆脱这个,并正确显示多个webview? 感谢。

2 个答案:

答案 0 :(得分:2)

您在代码中使用了setContentView()两次。这可能是原因。不建议在同一个Activity中多次使用setContentView()。如果需要实现,请尝试使用不同的片段。

答案 1 :(得分:1)

当我添加此代码时,它解决了:

    if(wView.getParent()!=null)
        ((ViewGroup)wView.getParent()).removeView(wView);