在活动中显示 ViewPager 时出现问题



帮助我解决这个问题,我对如何在main_activity.xml内显示/调用ViewPager感到非常困惑

我对安卓很陌生,我很难显示这个视图页。

我的主要活动

public class MainActivity extends Activity {
private SimpleSideDrawer mNav;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ActionBar actionBar = getActionBar();
    actionBar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#ed8699")));
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setCustomView(R.layout.actionbar);
    actionBar.setDisplayShowTitleEnabled(true);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setDisplayUseLogoEnabled(false);
    actionBar.setIcon(R.drawable.ic_drawer);
    mNav = new SimpleSideDrawer(this);
    mNav.setLeftBehindContentView(R.layout.activity_behind_left_simple);

    ImageButton button= (ImageButton) findViewById(R.id.back_button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mNav.closeLeftSide();
        }
    });
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.activity_main, menu);
  return true;
} 
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
    int itemId = item.getItemId();
    switch (itemId) {
    case android.R.id.home:
        mNav.toggleLeftDrawer();
        break; }
    return true;
}

选项卡寻呼适配器

public class TabsPagerAdapter extends FragmentPagerAdapter {
    public TabsPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager);
    }
    @Override
    public Fragment getItem(int index) {
        switch (index) {
        case 0:
            // 新着情報  fragment activity
            return new FirstTab();
        case 1:
            // パーティ fragment activity
            return new SecondTab();
        case 2:
            // ビューティ fragment activity
            return new ThirdTab();
        case 3:
            // 海外レポ  fragment activity
            return new FourthTab();
        }
        return null;
    }
    @Override
    public int getCount() {
        // get item count - equal to number of tabs
        return 4;
    }
}

我的视图页面主活动

    public class ViewPagerMainActivity extends FragmentActivity implements
    ActionBar.TabListener {
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
// Tab titles
private String[] tabs = { "Top Rated", "Games", "Movies","Movies" };
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Initilization
    viewPager = (ViewPager) findViewById(R.id.pager);
    actionBar = getActionBar();
    mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(mAdapter);
    actionBar.setHomeButtonEnabled(false);
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        
    // Adding Tabs
    for (String tab_name : tabs) {
        actionBar.addTab(actionBar.newTab().setText(tab_name)
                .setTabListener(this));
    }
    /**
     * on swiping the viewpager make respective tab selected
     * */
    viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            // on changing the page
            // make respected tab selected
            actionBar.setSelectedNavigationItem(position);
        }
        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {
        }
        @Override
        public void onPageScrollStateChanged(int arg0) {
        }
    });
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    // on tab selected
    // show respected fragment view
    viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}

activity_main.xml

  <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
  <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="379dp" >
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height= "900dp"
          android:background="#f08ea0">
          <LinearLayout
              android:layout_width="match_parent"
              android:layout_height="500dp"
              android:background="#FFFFFF"
              android:layout_gravity="bottom" >
               <include layout="@layout/view_pager"/>
          </LinearLayout>
      </LinearLayout>
  </LinearLayout>
</ScrollView>

View_pager.xml

    <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</android.support.v4.view.ViewPager>

使用滑动抽屉创建布局,并在 XML 布局中查看寻呼机。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.example.androidviewpagerapp.MainActivity" >
    <android.support.v4.view.ViewPager
        android:id="@+id/myviewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
</LinearLayout>

将主活动替换为以下源代码:

public class MainActivity extends Activity {
 ViewPager viewPager;
 MyPagerAdapter myPagerAdapter;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  viewPager = (ViewPager)findViewById(R.id.myviewpager);
  myPagerAdapter = new MyPagerAdapter();
  viewPager.setAdapter(myPagerAdapter);
 }
 private class MyPagerAdapter extends PagerAdapter{
  int NumberOfPages = 5;
  int[] res = { 
   android.R.drawable.ic_alert,
   android.R.drawable.ic_camera,
   android.R.drawable.ic_compass,
   android.R.drawable.ic_directions,
   android.R.drawable.ic_gallery};
  int[] backgroundcolor = { 
   0xFF101010,
   0xFF202020,
   0xFF303030,
   0xFF404040,
   0xFF505050};
  @Override
  public int getCount() {
   return NumberOfPages;
  }
  @Override
  public boolean isViewFromObject(View view, Object object) {
   return view == object;
  }
  @Override
  public Object instantiateItem(ViewGroup container, int position) {

      TextView textView = new TextView(MainActivity.this);
      textView.setTextColor(Color.WHITE);
      textView.setTextSize(30);
      textView.setTypeface(Typeface.DEFAULT_BOLD);
      textView.setText(String.valueOf(position));
      ImageView imageView = new ImageView(MainActivity.this);
      imageView.setImageResource(res[position]);
      LayoutParams imageParams = new LayoutParams(
        LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
      imageView.setLayoutParams(imageParams);
      LinearLayout layout = new LinearLayout(MainActivity.this);
      layout.setOrientation(LinearLayout.VERTICAL);
      LayoutParams layoutParams = new LayoutParams(
        LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
      layout.setBackgroundColor(backgroundcolor[position]);
      layout.setLayoutParams(layoutParams);
      layout.addView(textView);
      layout.addView(imageView);
      final int page = position;
      layout.setOnClickListener(new OnClickListener(){
    @Override
    public void onClick(View v) {
     Toast.makeText(MainActivity.this, 
      "Page " + page + " clicked", 
      Toast.LENGTH_LONG).show();
    }});
      container.addView(layout);
      return layout;
  }
  @Override
  public void destroyItem(ViewGroup container, int position, Object object) {
   container.removeView((LinearLayout)object);
  }
 }
}    

使用此代码满足您的要求。这对我有用。希望这对您有所帮助。如果您有任何其他疑问,请发表您的评论。

最新更新