我正在使用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? 感谢。
答案 0 :(得分:2)
您在代码中使用了setContentView()
两次。这可能是原因。不建议在同一个Activity中多次使用setContentView(
)。如果需要实现,请尝试使用不同的片段。
答案 1 :(得分:1)
当我添加此代码时,它解决了:
if(wView.getParent()!=null)
((ViewGroup)wView.getParent()).removeView(wView);