文本不显示在ViewPager [英] Text does not display on ViewPager
问题描述
我有一个问题,当我开始了我的应用我的ViewPager文字不显示。不过,文本也结束显示,当我刷卡的标签。我不知道是什么问题,我想文本尽快我的应用程序开始出现。任何帮助将是AP preciated!谢谢。
国家活动(主要活动)
包myapps.countryapp;进口android.content.Context;
进口android.support.v4.app.Fragment;
进口android.support.v4.app.FragmentManager;
进口android.support.v4.app.FragmentPagerAdapter;
进口android.support.v4.view.ViewPager;
进口android.support.v7.app.AppCompatActivity;
进口android.os.Bundle;
引入静态myapps.countryapp.R.id.pager;公共类CountriesActivity扩展AppCompatActivity {
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_countries); ViewPager viewPager =(ViewPager)findViewById(寻呼机);
viewPager.setAdapter(新MyAdapter(getSupportFragmentManager()));
}公共类MyAdapter扩展FragmentPagerAdapter {
最终诠释PAGE_COUNT = 2;
//创建标签瓷砖。
私人字符串tabTiles [] =新的String [] {国家,地图};
上下文语境; 公共MyAdapter(FragmentManager FM){
超(FM);
} @覆盖
公共片段的getItem(INT位置){
如果(位置== 0){
片段fragmentList =新的国家();
返回fragmentList;
}其他{
国家fragmentList =新的国家();
返回fragmentList;
}
} @覆盖
公众诠释的getCount(){
返回PAGE_COUNT;
} @覆盖
公共CharSequence的getPageTitle(INT位置){
返回tabTiles [位置]
}
}} //类的结束
Countries.java(片段文件)
包myapps.countryapp;进口android.os.Bundle;
进口android.view.LayoutInflater;
进口android.view.View;
进口android.view.ViewGroup;
进口android.support.v4.app.Fragment;
/ **
*一个简单的{@link片段}子类。
* /
公共类国家扩展片段{
公开的国家(){
//必需的空公共构造
}
@覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
捆绑savedInstanceState){
//充气的布局该片段
查看查看= inflater.inflate(R.layout.fragment_countries,集装箱,FALSE);
返回视图。
}}
activity_countries(主要XML文件)
< LinearLayout中的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools的android:layout_width =match_parent
机器人:layout_height =FILL_PARENT机器人:paddingLeft =@扪/ activity_horizontal_margin
机器人:paddingRight =@扪/ activity_horizontal_margin
机器人:paddingTop =@扪/ activity_vertical_margin
机器人:paddingBottom会=@扪/ activity_vertical_margin
工具:上下文=myapps.countryapp.CountriesActivity>< android.support.v4.view.ViewPager
的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:ID =@ + ID /寻呼机
机器人:layout_width =match_parent
机器人:layout_height =match_parent>< android.support.v4.view.PagerTabStrip
机器人:layout_width =match_parent
机器人:layout_height =40dp
机器人:paddingTop =4DP
机器人:paddingBottom会=10dp
机器人:layout_gravity =顶
机器人:ID =@ + ID / pagerStrip>< /android.support.v4.view.PagerTabStrip>< /android.support.v4.view.ViewPager>
fragment_countries.xml
<的FrameLayout的xmlns:机器人=http://schemas.android.com/apk/res/android
的xmlns:工具=http://schemas.android.com/tools的android:layout_width =match_parent
机器人:layout_height =match_parent工具:上下文=myapps.countryapp.Countries>< - TODO:更新空白片段布局 - >
< ListView控件
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:ID =@ + ID / MyListView>
< /&的ListView GT;< /&的FrameLayout GT;
好吧,这里是我的活动,viewpager和片段的例子:
活动:
公共类KataloziSlike扩展AppCompatActivity {
私人AdapterCustomPage mAdapterCustomPage;
私人ViewPager mViewPager;
私人TextView的电视,brojStranica;
私人的ImageButton设置,共享,locirajMe,备用; @覆盖
保护无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_katalozi_slike); 如果(Static.katalozi.getSlikeKataloga()。大小()== 1){
Message.message(KataloziSlike.this,促销伊马萨莫jednu stranu);
}
brojStranica =(的TextView)findViewById(R.id.tvBrojStranicaKataloga);
brojStranica.setText(将String.valueOf(1)+/+将String.valueOf(Static.katalozi.getSlikeKataloga()大小()+ 1)); mAdapterCustomPage =新AdapterCustomPage(getFragmentManager(),这一点);
mViewPager =(ViewPager)findViewById(R.id.view_pagerZaSlikeKataloga);
mViewPager.setAdapter(mAdapterCustomPage);
mViewPager.setCurrentItem(0);
mViewPager.addOnPageChangeListener(新ViewPager.OnPageChangeListener(){
@覆盖
公共无效onPageScrolled(INT位置,浮positionOffset,诠释positionOffsetPixels){ } @覆盖
公共无效使用onPageSelected(INT位置){ 如果(Static.katalozi.getSlikeKataloga()。大小()!= 1){
如果(位置== 0){
Message.message(KataloziSlike.this,纳prvoj stranici kataloga STE);
}否则如果(位置== Static.katalozi.getSlikeKataloga()尺寸() - 1){
Message.message(KataloziSlike.this,纳poslednjoj stranici kataloga STE);
}
} 如果(位置< = Static.katalozi.getSlikeKataloga()尺寸() - 1){
YourFragmentInterface片段=(YourFragmentInterface)mAdapterCustomPage.instantiateItem(mViewPager,位置);
如果(片段!= NULL){
fragment.fragmentBecameVisible();
}
} brojStranica.setText(将String.valueOf(位置+ 1)+/+将String.valueOf(Static.katalozi.getSlikeKataloga()大小()+ 1));
} @覆盖
公共无效onPageScrollStateChanged(INT状态){ }
});
}
}
适配器:
公共类AdapterCustomPage扩展FragmentStatePagerAdapter { 受保护的语境mContext;
INT maxBrojStrana = Static.katalozi.getSlikeKataloga()的大小()。
INT pozicija;
私人的ArrayList< Katalozi> mKatalozi; 公共AdapterCustomPage(FragmentManager FM,上下文的背景下){
超(FM);
mContext =背景;
}
@覆盖
公共片段的getItem(INT位置){ //创建片段对象
如果(位置== maxBrojStrana){
片段片段=新ImageFragmentMapKatalozi();
返回片段;
}其他{
片段片段=新ImageFragmentKatalozi();
fragment.onPause();
捆绑ARGS =新包();
Log.i(Poizicija,将String.valueOf(位置));
字符串URL = Static.katalozi.getSlikeKataloga()获得(位置)。
args.putString(URL,URL); fragment.setArguments(参数);
字符串link = Static.katalozi.getUrl();
args.putString(linkKataloga链接);
返回片段;
} }
@覆盖
公众诠释getItemPosition(Object对象){
pozicija = super.getItemPosition(对象);
返回super.getItemPosition(对象);
} @覆盖
公众诠释的getCount(){
返回maxBrojStrana + 1;
}}
和片段:
公共类ImageFragmentKatalozi扩展片段实现KataloziSlike.YourFragmentInterface {
私人PhotoViewAttacher mAttacher;
私人ImageView的ImageView的;
私人捆绑ARGS;
私人Button按钮; @覆盖
公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,捆绑savedInstanceState){ 查看rootView = inflater.inflate(R.layout.fragment_katalozi_slike,集装箱,FALSE); ARGS = getArguments();
ImageView的=(ImageView的)rootView.findViewById(R.id.imageViewAdapterZaListanjeKataloga);
回调imageLoadedCallback =新的回调(){ @覆盖
公共无效的onSuccess(){
如果(mAttacher!= NULL){
mAttacher.update();
}其他{
mAttacher =新PhotoViewAttacher(ImageView的); }
} @覆盖
公共无效onerror的(){
// TODO自动生成方法存根 }
}; Picasso.with(getActivity()).load(args.getString(\"url\")).placeholder(R.drawable.load).error(R.drawable.error).into(imageView, imageLoadedCallback);
mAttacher =新PhotoViewAttacher(ImageView的);
按钮=(按钮)rootView.findViewById(R.id.zaProveru);
button.setOnClickListener(新View.OnClickListener(){
@覆盖
公共无效的onClick(视图v){ }
});
返回rootView;
}
@覆盖
公共无效onResume(){
super.onResume();
Toast.makeText(getActivity(),sadsadasd,Toast.LENGTH_SHORT);
}
@覆盖
公共无效fragmentBecameVisible(){
mAttacher.update();
}
}
有什么问题你的是,当第一个片段是由它不是instatiated,只有当你刷卡(片段上的变化),那么它的表现。 Reffer到我的例子
I am having an issue where my ViewPager text does not display when I start up my application. However, the texts do end up showing when I swipe the tab. I am not sure what the problem is and I would like the text to appear as soon as my application starts. Any help would be appreciated! thanks.
Countries Activity(MAIN ACTIVITY)
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(fragment file)
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 FILE)
<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>
Ok, here is my example of activity, viewpager and fragment:
activity:
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) {
}
});
}
}
adapter:
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;
}
}
and fragment:
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();
}
}
What is problem with yours is that it isnt instatiated when first fragment is made, only when you swipe(on fragment change) then its showing. Reffer to my example
这篇关于文本不显示在ViewPager的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!