【问题标题】:Initiate slideshow after Button Click ViewPager/PagerAdapter AndroidButton Click ViewPager/PagerAdapter Android 后启动幻灯片
【发布时间】:2014-06-10 15:11:09
【问题描述】:

我正在尝试在按下开始按钮后开始播放幻灯片。我在这里看到了一些使用 ViewPager 和 PagerAdapter 的示例,但它们似乎都没有帮助。我的代码如下。当我按下开始按钮时,我的 logCat 说有一个 nullPointerException。

公共类 MainActivity 扩展 Activity {

private ViewPager mViewPager;
private SwipeAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void startShow(View v) {
    Toast toast = Toast.makeText(this, "Button was Clicked!", Toast.LENGTH_LONG);
    toast.show();
    mViewPager = (ViewPager) findViewById(R.id.pager);
    adapter = new SwipeAdapter(MainActivity.this);
    mViewPager.setAdapter(adapter);

}

private class SwipeAdapter extends PagerAdapter {

    private LayoutInflater mInflater;
    private int[] mLayouts = {R.layout.layout1, R.layout.layout2, R.layout.layout3, R.layout.layout4};

    public SwipeAdapter(Context context) {
        mInflater = LayoutInflater.from(context);
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ViewGroup pageView = (ViewGroup) mInflater.inflate(mLayouts[position],
                container, false);
        container.addView(pageView);
        getItemPosition(pageView);
        return pageView; 
    }

    @Override
    public int getCount() {
        return mLayouts.length;
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
    }
}

}

我的按钮包含一个可以正常工作的 onClick 属性。我的 4 个布局文件包含 ImageViews,其中包含幻灯片的 4 张图片(定义:R.layout.layout1 等...)。我有一个简单定义 ViewPager 的寻呼机 xml 文件。有什么建议吗?

【问题讨论】:

  • @mek 知道为什么我会收到空​​指针异常吗?单击按钮后,我仍然无法显示任何内容。
  • 首先确保一个简单的视图寻呼机适合您。为此,您可以查看Vogella's tutorial。完成后,您可以参考上面的链接。请注意:您是否能够在不单击按钮的情况下完成 ViewPager?

标签: android android-viewpager


【解决方案1】:

你得到 NullPointerException 因为你引用了不在activity_main中的寻呼机。将你的ViewPager放在activity_main中

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

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

</LinearLayout> 

最好将 Views 的实例化从 startShow() 移到 onCreate

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mViewPager = (ViewPager) findViewById(R.id.pager);
    adapter = new SwipeAdapter(MainActivity.this);
    mViewPager.setAdapter(adapter);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2023-03-28
    • 2018-01-12
    • 2015-04-21
    • 1970-01-01
    相关资源
    最近更新 更多