片段中的ViewPager无法正常显示

时间:2016-03-06 05:19:39

标签: android android-fragments android-viewpager android-pageradapter

以前我在Activity类中使用ViewPager作为图片滑块,但我发布了here的问题。 所以,我添加了一个片段,并尝试在其中添加ViewPager图像滑块,但没有运气。代码执行成功但ViewPager没有显示其内容。

实际上我想在我的主页中使用image slider,还需要从URL打开应用的功能 任何帮助!提前谢谢。

这里是xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

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

这是MainActivity.java

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {
IAppManager imService;
Boolean mIsBound=false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startService(new Intent(this, BackgroundService.class));
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
    navigationView.setItemIconTintList(null);
    Fragment fragment= new HomeFragment();
    if (fragment != null) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.container_body, fragment);
        fragmentTransaction.commit();

        // set the toolbar title
        getSupportActionBar().setTitle("Home");
    }
  }
}

这里是片段类

public class HomeFragment extends Fragment {

ViewPager viewPager;
Timer timer;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_home, container, false);
    //image slider
    viewPager = (ViewPager) rootView.findViewById(R.id.view_pager);
    ImageAdapter adapter = new ImageAdapter(getActivity());
    viewPager.setAdapter(adapter);
    //viewPager.setPageTransformer(false, new DepthPageTransformer());


    return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return super.onOptionsItemSelected(item);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);
  }
}

这里是Adapter class

public class ImageAdapter extends PagerAdapter {
Context context;
private int[] GalImages = new int[] {
        R.drawable.a1,
        R.drawable.a2,
        R.drawable.a3,
        R.drawable.a4,
};
public ImageAdapter(Context context){
    this.context=context;
}
@Override
public int getCount() {
  return GalImages.length;
}

@Override
public boolean isViewFromObject(View view, Object object) {
  return view == ((ImageView) object);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
  ImageView imageView = new ImageView(context);
  //int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
  //imageView.setPadding(padding, padding, padding, padding);
  imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
  imageView.setImageResource(GalImages[position]);
  ((ViewPager) container).addView(imageView, 0);
  return imageView;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
  ((ViewPager) container).removeView((ImageView) object);
}


 }

1 个答案:

答案 0 :(得分:1)

您在片段的OnCreateView中返回了错误的视图。您正在为rootView充气,那么您应该返回它!

尝试替换:

返回super.onCreateView(inflater,container,savedInstanceState);

返回rootView;