首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ViewPager与FragmentPagerAdapter

ViewPager与FragmentPagerAdapter
EN

Stack Overflow用户
提问于 2016-07-09 10:28:32
回答 1查看 888关注 0票数 0

我的适配器工作正常,但我的片段视图没有膨胀。我的主要活动:

代码语言:javascript
复制
package com.example.rishi.flipper;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    toolbar= (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    viewPager= (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);
    tabLayout= (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);
}

private void setupViewPager(ViewPager viewPager) {
    ViewPagerAdapter viewpageradapter= new ViewPagerAdapter(getSupportFragmentManager());
    viewpageradapter.addFragment(new Fragone(),"One");
    viewpageradapter.addFragment(new FragTwo(),"Two");
    viewpageradapter.addFragment(FragTwo.newInstance(),"Two");
    viewPager.setAdapter(viewpageradapter);

}
}

主要活动的资源: activity_main.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout          xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.design.widget.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
>
<android.support.v7.widget.Toolbar
    android:layout_width="match_parent"
    android:id="@+id/toolbar"
    android:layout_height="?attr/actionBarSize"
    android:background="@color/colorPrimary"
    >
 <TextView
     android:layout_width="wrap_content"
     android:text="Toolbar"
     android:height="24sp"
     android:gravity="center"
     android:textColor="#FFFFFF"
     android:layout_height="wrap_content" />
 </android.support.v7.widget.Toolbar>
 <android.support.design.widget.TabLayout
    android:layout_width="match_parent"

    android:layout_height="wrap_content"
    android:id="@+id/tabs"
    app:tabGravity="fill"
    app:tabMode="scrollable"
    ></android.support.design.widget.TabLayout>
 <android.support.v4.view.ViewPager
    android:layout_width="match_parent"
    android:id="@+id/viewpager"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_height="wrap_content">

 </android.support.v4.view.ViewPager>


 </android.support.design.widget.AppBarLayout>
 </android.support.design.widget.CoordinatorLayout>

这是我的适配器:

代码语言:javascript
复制
package com.example.rishi.flipper;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
public class ViewPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> array=new ArrayList<>();
ArrayList<String> title=new ArrayList<>();
public ViewPagerAdapter(FragmentManager supportFragmentManager) {
    super(supportFragmentManager);
}

@Override
public Fragment getItem(int position) {

    return array.get(position);
}

public void addFragment(Fragment fragment, String text) {
    array.add(fragment);
    title.add(text);

}

@Override
public int getCount() {

    return array.size();

}

@Override
public CharSequence getPageTitle(int position) {
    return title.get(position);
}
}

我使用布局充气器来放大文本视图的片段。

EN

回答 1

Stack Overflow用户

发布于 2016-07-09 11:26:00

ViewPager不能因为它的高度而wrap_content,因为它不能知道所有子节点的最大高度,因为它们不可能同时被实例化(ViewPager在页面之间滚动时根据需要创建和销毁其子节点)。更改为match_parent可能会解决此问题。

举行一个ArrayList Fragment__s of也是一个非常糟糕的主意,因为这将不可避免地导致内存泄漏,并在生产过程死亡后崩溃。ViewPager的预期行为是根据需要在getItem中实例化这些片段。

如果在这两个更改之后,它仍然没有膨胀,那么问题很可能出现在您的片段的onCreateView代码中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38280842

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档