2013-06-18 2 views
1

Я хотел бы использовать ViewPagerIndicator для навигации по фрагментам в моем приложении. Я успешно импортировал библиотеку и реализовал TitlePageIndicator. Пока у меня нет никаких исключений при запуске приложения, и я также вижу индикатор, но без имен страниц. Вот мой кодViewPagerIndicator не отображает заголовки

viewpager_layout.xml

<?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" > 

<com.viewpagerindicator.TitlePageIndicator 
    android:id="@+id/titles" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent"/> 

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

</LinearLayout> 

SearchActivity

public class SearchActivity extends FragmentActivity 
implements Tab1Fragment.OnHeadlineSelectedListener, Tab2Fragment.OnHeadlineSelectedListener 
{ 

private MyPagerAdapter mPagerAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    //getApplicationContext().deleteDatabase("db"); 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.viewpager_layout); 

    UserID.getInstance().createUserID(this); 

    this.initialisePaging(); //initialsie the pager 
    invalidateOptionsMenu(); 

} 

private void initialisePaging() { 

    List<Fragment> fragments = new Vector<Fragment>(); 
    fragments.add(Fragment.instantiate(this, Tab1Fragment.class.getName())); 
    fragments.add(Fragment.instantiate(this, Tab2Fragment.class.getName())); 
    fragments.add(Fragment.instantiate(this, Tab3Fragment.class.getName())); 
    this.mPagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), fragments); 


    ViewPager pager = (ViewPager)findViewById(R.id.viewpager); 
    pager.setAdapter(mPagerAdapter); 

    TitlePageIndicator titleIndicator = (TitlePageIndicator) findViewById(R.id.titles); 
    titleIndicator.setViewPager(pager); 
} 
} 

MyPagerAdapter

package com.easyimmoandroid.myPager; 

import java.util.List; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

public class MyPagerAdapter extends FragmentPagerAdapter { 

private static final String[] TITLES = new String[] { "Title 1", "Title 2", "Title 3" }; 

private List<Fragment> fragments; 

public MyPagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
    super(fm); 
    this.fragments = fragments; 
} 

@Override 
public Fragment getItem(int pos) { 
    return this.fragments.get(pos); 
} 

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

@Override 
public CharSequence getPageTitle(int position) { 
    return TITLES[position]; 
} 

} 

Фрагмент

package com.easyimmoandroid.fragments; 

public class Tab1Fragment extends Fragment { 

private ScrollView mScrollView; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    if (container == null) { 
     return null; 
    } 

    // FRAGMENT LAYOUT 
    mScrollView = (ScrollView) inflater.inflate(R.layout.tab_frag1_layout, 
      container, false); 
... 

return mScrollView; 
} 

спасибо за вашу помощь

и как это до сих пор does't работу, я хотел бы попросить вас, чтобы предложить мне, если есть какие-либо другое решение, чтобы сделать это, кроме как с WiewPagerIndicator.

+1

super.setContentView (R.layout.viewpager_layout); вы можете удалить супер – Raghunandan

+0

@ amer.salkovic +1 в Рагхунандан, а также ViewPager pager = (ViewPager) super.findViewById (R.id.viewpager); - что это значит? – TheFlash

+0

Я использовал этот http://thepseudocoder.wordpress.com/2011/10/05/android-page-swiping-using-viewpager/ учебник для фрагментов и прокрутки. Я нашел его там. Я думаю, что в этом упражнении должен быть viewpager_layout, и это так, как это должно быть сделано, или я ошибаюсь? – amsalk

ответ

0

Попробуйте добавить это в конце вашего метода initialisePaging:

 pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
     @Override 
     public void onPageSelected(int position) { 
      mPagerAdapter.getPageTitle(position); 
     } 
    }); 

Он работал для меня :)

+0

, к сожалению, это не работает для меня :( – amsalk

+0

смотреть сайт titlepageindicator, вы должны добавить это как 'titleIndicator.setOnPageChangeListener (mPageChangeListener);' Создайте объект-слушатель и установите на обоих они, не уверены, что он будет работать – zozelfelfo

0

Измените свой getItem() метод как этот

@Override 
    public Fragment getItem(int pos) { 
     return TestFragment.newInstance(fragments.get(position % fragments.size)); 
    } 

также изменить вам getPageTitle до

@Override 
public CharSequence getPageTitle(int position) { 
    return MyPagerAdapter.fragments.get(position % fragments.size); 
} 

и TestFragment класса выглядеть

 public final class TestFragment extends Fragment{ 


      static Typeface typeface, type2; 
      private static final String KEY_CONTENT = "TestFragment:Content"; 



      public static TestFragment newInstance(String content) 
      { 

       TestFragment fragment = new TestFragment(); 

       StringBuilder builder = new StringBuilder(); 

       builder.append(content).append(" "); 

       builder.deleteCharAt(builder.length() - 1); 
       fragment.mContent = builder.toString(); 

       return fragment; 
      } 

      private String mContent = "???"; 

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


       if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) 
       { 
        mContent = savedInstanceState.getString(KEY_CONTENT); 
       } 

      } 

      @Override 
      public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 


       LinearLayout layout = new LinearLayout(getActivity()); 

       layout.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 



    TextView text = new TextView(getActivity()); 
       text.setText(mContent); 
       text.setTextSize(20f); 
       layout.addView(text); 
       layout.setGravity(Gravity.CENTER); 

       return layout; 
      } 

      @Override 
      public void onSaveInstanceState(Bundle outState) 
      { 
       super.onSaveInstanceState(outState); 
       outState.putString(KEY_CONTENT, mContent); 
      } 
} 

Надеется, что это может решить вашу проблему

+0

TestFragment должен быть одним из моих фрагментов или? – amsalk

+0

Тестовый фрагмент - это класс, который расширяет фрагмент –

+0

, теперь метод newInstance является проблемой. У меня нет его в моих фрагментах. или что? – amsalk

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