2015-10-25 7 views
0

Я делаю приложение, которое должно иметь 4 скользящих вкладки. Я нашел этот учебник: http://www.android4devs.com/2015/01/how-to-make-material-design-sliding-tabs.html?m=1, за которым я последовал, и он отлично поработал, но он показывает только, как сделать это с помощью двух вкладок ... Кто-то еще спросил об этом в комментариях, и ему ответили, чтобы сказать что-то, что дало мне много ошибок , Как мне заставить это работать с 4 вкладками вместо двух?4 Скользящие вкладки вместо 2

+0

Можете ли вы привести пример того, что вы пытались, что не работает? – andorov

+0

Ниже приведен ответ, но я получаю одну ошибку на шаге 3 (отредактируйте класс ViewPagerAdapter). В конце я получаю сообщение об ошибке «Отсутствует заявление о возврате», у кого есть решение? – Spickle

ответ

1

1) В MainActivity:

В строке 20, отрегулировать

int Numboftabs =2; 

Для правильного количества вкладок желательно.

2) Повторите шаг 5 & 6 из учебника, но вместо того, чтобы сделать Tab1 & TAB2, сделать TAB3/4, ...

В основном вам нужно добавить класс Java файл + файл макет для каждой вкладке. Поэтому здесь мы идем:

Сделать tab_X.xml (X это номер/имя) со следующим содержанием

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:text="You Are In Tab X" 
    android:id="@+id/textView" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 
</RelativeLayout> 

Сделать ява класс TabX (заменить X с номером вкладки, или просто заменить с именем)

package com.android4devs.slidingtab; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

public class TabX extends Fragment { 

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

3) Редактирование ViewPagerAdapter класс

Например или 3 вкладки вместо 2, измените следующий

//This method return the fragment for the every position in the View Pager 
@Override 
public Fragment getItem(int position) { 

    if(position == 0) // if the position is 0 we are returning the First tab 
    { 
     Tab1 tab1 = new Tab1(); 
     return tab1; 
    } 
    else    // As we are having 2 tabs if the position is now 0 it must be 1 so we are returning second tab 
    { 
     Tab2 tab2 = new Tab2(); 
     return tab2; 
    } 
} 

Для

//This method return the fragment for the every position in the View Pager 
@Override 
public Fragment getItem(int position) { 

    if(position == 0) // if the position is 0 we are returning the First tab 
    { 
     Tab1 tab1 = new Tab1(); 
     return tab1; 
    } 
    else if(position == 1) 
    { 
     Tab2 tab2 = new Tab2(); 
     return tab2; 
    } 
    else if(position == 2) 
    { 
     Tab3 tab3 = new Tab3(); 
     return tab3; 
    } 
    else if { .... } // add more as desired. 
    // but make sure that you use "else" instead of "else if" for the last tab. 
} 

Все должно работать после того, как вы сделали эти изменения. Я хочу упомянуть, что код, предоставленный/отредактированный, из учебника в вопросе OP.

+0

Большое спасибо! На последнем шаге я получаю только одну ошибку: Отсутствует оператор return. что делать сейчас? – Spickle

+0

Я понял: на последней вкладке вы не должны ставить иначе, если, а просто еще – Spickle

+0

@Spickle Это верно :-). Добавлю это в свой ответ. Если этот ответ разрешил ваш вопрос, не могли бы вы пометить его как ответ? (нажмите галочку рядом с ответом). –

Смежные вопросы