1

我使用 ViewPager 编写了一个 Android 应用程序。现在,我在使用 ViewPager 时感到困惑。当我使用下面的代码从布局 xml 文件中扩展视图并将其添加到 viewpager 中时。

public Object instantiateItem(ViewGroup container, int position) {
     View view = View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, null);
     container.addView(view);
     return view;
}

但是当我使用下面的代码时,viewpager 什么也不会显示。

public Object instantiateItem(ViewGroup container, int position) {    
     View view = View.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, container);
     return view;
}

我认为这两个片段做同样的事情,但结果不同。我不知道为什么。谁能帮我 ?谢谢 !

4

1 回答 1

0

实际上,这些片段做的事情略有不同:

  1. 膨胀视图并将其添加到容器中;
  2. 只是扩大视野;

这里的问题如下:

call toView.inflate(ShareTasksActivity.this, R.layout.item_internal_advertisement, container);等于以下之一:(LayoutInflater.from(ShareTasksActivity.this).inflate(R.layout.item_internal_advertisement, container, false);检查其来源)。同时instantiateItem() 文档提到:

适配器负责将视图添加到此处给出的容器中

因此,第二个变体根本不起作用,因为它没有向容器添加视图。

但是,根据我的理解,第一个变体也有一个问题:如果您提供父视图,您可能为顶级视图提供的布局参数R.layout.item_internal_advertisement将不会被应用。null

于 2013-07-16T03:28:28.733 回答