2015-08-23 44 views
0

我有一個問題,當我啓動我的應用程序時,我的ViewPager文本不顯示。但是,當我滑動選項卡時,文本最終會顯示。我不確定問題是什麼,我希望在我的應用程序啓動後立即顯示文本。任何幫助,將不勝感激!謝謝。文字不顯示在ViewPager

國家活性(主要活動

package myapps.countryapp; 

import android.content.Context; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import static myapps.countryapp.R.id.pager; 

public class CountriesActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_countries); 

    ViewPager viewPager = (ViewPager) findViewById(pager); 
    viewPager.setAdapter(new MyAdapter(getSupportFragmentManager())); 
} 

public class MyAdapter extends FragmentPagerAdapter { 
    final int PAGE_COUNT = 2; 
    //Create tab tiles. 
    private String tabTiles[] = new String[] {"Countries", "Map"}; 
    Context context; 

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

    @Override 
    public Fragment getItem(int position) { 
     if(position == 0){ 
      Fragment fragmentList = new Countries(); 
      return fragmentList; 
     }else { 
      Countries fragmentList = new Countries(); 
      return fragmentList; 
     } 
    } 

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

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

}//end of class 

Countries.java(片段文件)

package myapps.countryapp; 

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


/** 
* A simple {@link Fragment} subclass. 
*/ 
public class Countries extends Fragment { 


public Countries() { 
    // Required empty public constructor 
} 


@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View view = inflater.inflate(R.layout.fragment_countries, container, false); 
    return view; 
} 

} 

activity_countries(MAIN XML文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="fill_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context="myapps.countryapp.CountriesActivity"> 

<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id = "@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

<android.support.v4.view.PagerTabStrip 
    android:layout_width="match_parent" 
    android:layout_height = "40dp" 
    android:paddingTop = "4dp" 
    android:paddingBottom = "10dp" 
    android:layout_gravity = "top" 
    android:id = "@+id/pagerStrip"> 

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

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

fragment_countries.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" tools:context="myapps.countryapp.Countries"> 

<!-- TODO: Update blank fragment layout --> 


<ListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/MyListView"> 
    </ListView> 

</FrameLayout> 
+0

你在說什麼文字?標籤標題? –

+0

是的突出部標題 –

+0

可能重複(http://stackoverflow.com/questions/32168726/text-in-pagertabstrip-not-displayed-upon-1st-view) – Krish

回答

0

好吧,這裏是我的活動,viewpager和片段的例子:

活動:

public class KataloziSlike extends AppCompatActivity { 


    private AdapterCustomPage mAdapterCustomPage; 
    private ViewPager mViewPager; 
    private TextView tv, brojStranica; 
    private ImageButton settings, share, locirajMe, back; 

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

     if (Static.katalozi.getSlikeKataloga().size() == 1) { 
      Message.message(KataloziSlike.this, "Katalog ima samo jednu stranu"); 
     } 
     brojStranica = (TextView) findViewById(R.id.tvBrojStranicaKataloga); 
     brojStranica.setText(String.valueOf(1) + "/" + String.valueOf(Static.katalozi.getSlikeKataloga().size() + 1)); 

     mAdapterCustomPage = new AdapterCustomPage(getFragmentManager(), this); 
     mViewPager = (ViewPager) findViewById(R.id.view_pagerZaSlikeKataloga); 
     mViewPager.setAdapter(mAdapterCustomPage); 
     mViewPager.setCurrentItem(0); 


     mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageSelected(int position) { 

       if (Static.katalozi.getSlikeKataloga().size() != 1) { 
        if (position == 0) { 
         Message.message(KataloziSlike.this, "Na prvoj stranici kataloga ste"); 
        } else if (position == Static.katalozi.getSlikeKataloga().size() - 1) { 
         Message.message(KataloziSlike.this, "Na poslednjoj stranici kataloga ste"); 
        } 
       } 

       if (position <= Static.katalozi.getSlikeKataloga().size() - 1) { 
        YourFragmentInterface fragment = (YourFragmentInterface) mAdapterCustomPage.instantiateItem(mViewPager, position); 
        if (fragment != null) { 
         fragment.fragmentBecameVisible(); 
        } 
       } 

       brojStranica.setText(String.valueOf(position + 1) + "/" + String.valueOf(Static.katalozi.getSlikeKataloga().size() + 1)); 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 
} 
} 

適配器:

public class AdapterCustomPage extends FragmentStatePagerAdapter { 

    protected Context mContext; 
    int maxBrojStrana = Static.katalozi.getSlikeKataloga().size(); 
    int pozicija; 
    private ArrayList<Katalozi> mKatalozi; 

    public AdapterCustomPage(FragmentManager fm, Context context) { 
     super(fm); 
     mContext = context; 
    } 




    @Override 
    public Fragment getItem(int position) { 

     // Create fragment object 
     if (position == maxBrojStrana) { 
      Fragment fragment = new ImageFragmentMapKatalozi(); 
      return fragment; 
     } else { 
      Fragment fragment = new ImageFragmentKatalozi(); 
      fragment.onPause(); 
      Bundle args = new Bundle(); 
      Log.i("Poizicija", String.valueOf(position)); 
      String url = Static.katalozi.getSlikeKataloga().get(position); 
      args.putString("url", url); 

      fragment.setArguments(args); 


      String link = Static.katalozi.getUrl(); 
      args.putString("linkKataloga", link); 




      return fragment; 
     } 

    } 


    @Override 
    public int getItemPosition(Object object) { 
     pozicija = super.getItemPosition(object); 
     return super.getItemPosition(object); 
    } 

    @Override 
    public int getCount() { 
     return maxBrojStrana + 1; 
    } 

} 

和片段:

public class ImageFragmentKatalozi extends Fragment implements KataloziSlike.YourFragmentInterface { 


    private PhotoViewAttacher mAttacher; 
    private ImageView imageView; 
    private Bundle args; 
    private Button button; 

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

     View rootView = inflater.inflate(R.layout.fragment_katalozi_slike, container, false); 

     args = getArguments(); 
     imageView = (ImageView) rootView.findViewById(R.id.imageViewAdapterZaListanjeKataloga); 


     Callback imageLoadedCallback = new Callback() { 

      @Override 
      public void onSuccess() { 
       if (mAttacher != null) { 
        mAttacher.update(); 
       } else { 
        mAttacher = new PhotoViewAttacher(imageView); 

       } 
      } 

      @Override 
      public void onError() { 
       // TODO Auto-generated method stub 

      } 
     }; 

     Picasso.with(getActivity()).load(args.getString("url")).placeholder(R.drawable.load).error(R.drawable.error).into(imageView, imageLoadedCallback); 
     mAttacher = new PhotoViewAttacher(imageView); 
     button = (Button) rootView.findViewById(R.id.zaProveru); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

      } 
     }); 


     return rootView; 
    } 


    @Override 
    public void onResume() { 
     super.onResume(); 
     Toast.makeText(getActivity(), "sadsadasd", Toast.LENGTH_SHORT); 
    } 


    @Override 
    public void fragmentBecameVisible() { 
     mAttacher.update(); 
    } 
} 

什麼是你的問題是,當第一個片段是由它不是instatiated,只有當你刷卡(上段變化),那麼它的表現。回到我的例子

+0

你好,我曾經嘗試這樣做我的代碼,它似乎我還有同樣的問題是我對我的代碼所做的一些更改:myAdapter = new MyAdapter(getSupportFragmentManager(),this); mViewPager =(ViewPager)findViewById(R.id.pager); mViewPager.setAdapter(myAdapter); mViewPager.setCurrentItem(0); 我還在我的適配器中添加了getItemPosition方法: @Override public int getItemPosition(Object object){ a = super.getItemPosition(object); return super.getItemPosition(object); } 還沒有。 –

+0

in activity public void onPageSelected(int position)這樣做: if(position == 0){ 將文本設置爲您的文本視圖 } –

+0

我沒有在我的片段中使用文本視圖。我在這裏主要以下教程:http://www.androidbegin.com/tutorial/android-viewpagertabstrip-fragments-tutorial/ –