ViewPager上的findViewById返回' Android.view.View',无法转换为ViewPager

时间:2017-08-14 09:41:57

标签: android android-fragments android-viewpager

[解决]

我试图按照this turorial在我的可穿戴应用程序上获取ViewPager。但是,当我尝试将XML中的ViewPager分配给变量时,它只将其识别为" View",而不是ViewPager。这给了我以下错误:

Error

检查其他教程时,似乎没有任何问题。他们都可以轻松地将他们的ViewPager分配给他们的变量......

viewpager.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/viewpager_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
            />

</LinearLayout>

ViewPager.java

/*
*
* VIEWPAGER TUTORIAL
* https://thepseudocoder.wordpress.com/2011/10/05/android-page-swiping-using-viewpager/
* door the pseudocoder
* */
public class ViewPager extends FragmentActivity {

    private PagerAdapter pagerAdapter;

    /* (non-Javadoc)
      * @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle)
      */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.viewpager);
        //initialsie the pager
        this.initialisePaging();
    }

    /**
     * Initialise the fragments to be paged
     */
    private void initialisePaging() {

        List<Fragment> fragments = new Vector<Fragment>();
        fragments.add(Fragment.instantiate(this, Monitor.class.getName()));
        fragments.add(Fragment.instantiate(this, CurrentSongOverviewWear.class.getName()));
        this.pagerAdapter  = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);

        ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager_container);
        pager.setAdapter(this.pagerAdapter);
    }

}

在initialisePaging()中的这一行给出了错误:

ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager_container);

3 个答案:

答案 0 :(得分:2)

由于您为自己的班级ViewPager命名,因此它现在会尝试将视图投射到ViewPager的类型,该视图从FragmentActivity延伸。当然,这不是View

将您的课程重命名为例如ViewPagerActivity - 将解决您的问题。如果您查看该教程的代码,您会看到他们使用了ViewPagerFragmentActivity

答案 1 :(得分:0)

  1. 确保您已导入 android.support.v4.view.ViewPager
  2. 更改活动名称。 ViewPager 本身就是一个班级。必须重命名。
  3. 示例

     public class ViewPagerActivity extends FragmentActivity {
    

答案 2 :(得分:0)

只需将您的活动重命名为其他名称,例如:ViewPagerActivity

或将视图转换为正确的格式:

android.support.v4.view.ViewPagerpager = (android.support.v4.view.ViewPager) findViewById(R.id.viewpager_container);