Android 不显示片段的ViewPager

Android 不显示片段的ViewPager,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,令人惊讶的是,这是我第一次尝试使用片段。我知道我早就应该开始使用它们了,但好吧,迟用总比不使用好 我遵循这个指南 它对我不起作用,所以我在堆栈上搜索这里,研究这个答案 然而,我的碎片仍然拒绝出现。也许我做错了什么,一些基本的错误。这是我的密码: ImageGalleryFragment.java public class ImageGalleryFragment extends Fragment { @Override public View onCreateView(Layo

令人惊讶的是,这是我第一次尝试使用片段。我知道我早就应该开始使用它们了,但好吧,迟用总比不使用好

我遵循这个指南

它对我不起作用,所以我在堆栈上搜索这里,研究这个答案

然而,我的碎片仍然拒绝出现。也许我做错了什么,一些基本的错误。这是我的密码:

ImageGalleryFragment.java

 public class ImageGalleryFragment extends Fragment
{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        View v = inflater.inflate(R.layout.fragment_images, container, false);

        ImageView iv = (ImageView) v.findViewById(R.id.imageView);
        Picasso.with(getActivity()).load("http://i.stack.imgur.com/WvXbA.png".replaceAll(" ", "%20")).into(iv);

        return v;
    }

    public static ImageGalleryFragment newInstance(String text)
    {
        ImageGalleryFragment f = new ImageGalleryFragment();
        Bundle b = new Bundle();
        b.putString("image", text);

        return f;
    }
}
fragment_images.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/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scaleType="fitXY"
    android:src="@drawable/placeholder"/>
</LinearLayout>
我知道我在硬编码一些东西,但那是因为我在以下方面得到了nullpointerexception:

getArguments().getString("image")
最后,这是我在xml中的viewpager:

<android.support.v7.widget.CardView
            android:id="@+id/card_view0"
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:card_view="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            card_view:cardBackgroundColor="#ffffff"
            card_view:cardCornerRadius="4dp">

            <android.support.v4.view.ViewPager
                android:id="@+id/pager"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />

        </android.support.v7.widget.CardView>


那么,我没有做什么或做错了什么?我的活动中没有碎片的迹象。

问题在于您已正确指出的viewPagers高度。毕加索仅在视图膨胀并因此已包装后加载图像。解决方案是将CardView或ViewPagers高度设置为固定dp

另一个选项是编写自定义的ViewPager,它扩展了ViewPager并在onMeasure()中测量图像高度。然后在xml布局中实现此自定义ViewPager:

public class CustomViewPager extends ViewPager { //extend the android viewpager

  public CustomViewPager(Context context) {
      super(context);
  }

  public CustomViewPager(Context context, AttributeSet attrs) {
      super(context, attrs);
  }

  @Override //override onMeasure so we can measure the heights of our children
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

      int height = 0;
      for(int i = 0; i < getChildCount(); i++) {
          View child = getChildAt(i);
          child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
          int h = child.getMeasuredHeight();
          if(h > height) height = h;
      }

      heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

      super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  }

}
public类CustomViewPager扩展ViewPager{//扩展android ViewPager
公共CustomViewPager(上下文){
超级(上下文);
}
公共CustomViewPager(上下文、属性集属性){
超级(上下文,attrs);
}
@Override//Override on measure这样我们就可以测量孩子的身高了
测量时的保护空隙(内部宽度测量等级、内部高度测量等级){
整数高度=0;
对于(int i=0;i高度)高度=h;
}
heightMeasureSpec=MeasureSpec.MakeMasureSpec(高度,精确测量);
超级测量(宽度测量、高度测量);
}
}
然后在xml中:

  <android.support.v7.widget.CardView
        android:id="@+id/card_view0"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        card_view:cardBackgroundColor="#ffffff"
        card_view:cardCornerRadius="4dp">

        <com.your.path.to.CustomViewPager //point this path the package where your custom class is
                    android:id="@+id/imagePager"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"/>

    </android.support.v7.widget.CardView>


请把你的片段的java代码放在我这里,不是吗?第一个代码。ImageGalleryFragments确保您使用的是v4库中的片段,而不是应用程序中的片段。您的代码是否编译?删除适配器getItem调用中的“new”。在您的fragments onCreateView()中放一个日志,看看它是否出现在您的logcat中。。。。这将有助于我们确定problem@AbhishekV我正在使用支持库。
  <android.support.v7.widget.CardView
        android:id="@+id/card_view0"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        card_view:cardBackgroundColor="#ffffff"
        card_view:cardCornerRadius="4dp">

        <com.your.path.to.CustomViewPager //point this path the package where your custom class is
                    android:id="@+id/imagePager"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"/>

    </android.support.v7.widget.CardView>