0

Мне нужно отобразить вкладки в закладке Макет, который находится в Контейнерной деятельности, но так или иначе вкладки не отображаются. Если это помогает, этот проект также имеет три действия, которые включают Активность входа, Активность Карты, Активность Регистрации.Вкладки в TabLayout не отображаются

Примечание: Фрагмент карты отличается от активности Карт.

Container.java

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

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    viewPager = (ViewPager) findViewById(viewPager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabLayout); 
    tabLayout.post(new Runnable() { 
     @Override 
     public void run() { 
      tabLayout.setupWithViewPager(viewPager); 
     } 
    }); 
} 

private void setupViewPager(ViewPager viewPager) { 

    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 

    adapter.addFragment(new MapFragment(), "Map"); 
    adapter.addFragment(new Chat(),"Chat"); 

    viewPager.setAdapter(adapter); 

} 

class ViewPagerAdapter extends FragmentPagerAdapter{ 

    private List<Fragment> mFragment = new ArrayList<>(); 
    private List<String> mFragmentTitle = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { return null; } 

    @Override 
    public int getCount() { 
     return 0; 
    } 

    public void addFragment(Fragment fragment, String fragmentTitle){ 

     mFragment.add(fragment); 
     mFragmentTitle.add(fragmentTitle); 

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

activity_container.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:textAlignment="center" 
     android:background="@android:color/darker_gray" 
     app:layout_scrollFlags="scroll|enterAlways" 
     android:minHeight="22dp" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 


    <android.support.design.widget.TabLayout 
     android:id="@+id/tabLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabGravity="fill" 
     /> 

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

<android.support.v4.view.ViewPager 
    android:id="@+id/viewPager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 
</android.support.design.widget.CoordinatorLayout> 

Чат Фрагмент Chat.java

public class Chat extends Fragment { 

public Chat(){ 

} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.activity_chat, container,false); 
} 

}

activity_chat.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_chat" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.downy.gpslocation.Chat"> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Hey there this is chat" 
    android:layout_centerInParent="true"/> 
</RelativeLayout> 

Благодарим за помощь.

ответ

1

Вы должны иметь:

@Override 
public int getCount() { 
    return mFragment.size(); 
} 

Поскольку вы возвращаете 0, говоря, что адаптер пуст.

также:

@Override 
public Fragment getItem(int position) { 
    return mFragment.get(position); 
} 

Чтобы вернуть правильный фрагмент для данной позиции, а не нулевой.

0

что-то я видел в вашем коде ViewPagerAdapter получил GetCount return 0 и GetItem return null

+0

Это методы переопределения, и я их не использую, поэтому они возвращают 0 или null. – TOderMAl

+0

используйте их, чтобы вернуть счетчик адаптера и фрагмент, который вы хотите показать, и 'getPageTitle', чтобы вернуть заголовок, который вы хотите показать –