标签位置选择始终出错位置

时间:2017-10-08 03:09:42

标签: java android android-fragments tabview

您好我正在使用制表符开发应用程序,我使用相同的片段(新闻片段.java)在选项卡选择时从不同的URL获取信息到列表视图但我运行我的应用程序时遇到问题然后它正常工作但是在选项卡位置选择时,它们有时会在列表视图中显示不同的Tab(URL)信息,就像第一次运行时我的应用程序将案例1信息显示到listview而不是案例0,并且直接选择最后一个选项卡案例5,它将案例4信息显示到列表显示。我在这里缺少什么

MainActivity.java

 ViewPager viewPager = null;
    TabLayout tabLayout;
    static String  url;
    private static final String Topics[] = {"Pakistan", "World", "Sports", "Business", "Entertainment", "Health"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        viewPager = (ViewPager) findViewById(R.id.viewpager);
        tabLayout = (TabLayout) findViewById(R.id.tabLayout);
        ViewpagerAadapters adapter = new ViewpagerAadapters(getSupportFragmentManager(), tabLayout.getTabCount());
        viewPager.setAdapter(adapter);
        tabLayout.setupWithViewPager(viewPager);
    }
    private class ViewpagerAadapters extends FragmentStatePagerAdapter {
        int tabCount;

        private ViewpagerAadapters(FragmentManager fm, int tabCount) {
            super(fm);
            this.tabCount= tabCount;
        }

        @Override
        public Fragment getItem(int position) {
            Log.i("Position", "Posotion: " + position);
            switch (position) {
                case 0:
                    url = "https://www.geo.tv/rss/1/1";
                    return new GeoNews();
                case 1:
                    url = "https://www.geo.tv/rss/1/2";
                    return new GeoNews();
                case 2:
                    url = "https://www.geo.tv/rss/1/4";
                    return new GeoNews();
                case 3:
                    url = "https://www.geo.tv/rss/1/3";
                    return new GeoNews();
                case 4:
                    url = "https://www.geo.tv/rss/1/5";
                    return new GeoNews();
                case 5:
                    url = "https://www.geo.tv/rss/1/6";
                    return new GeoNews();
                default:
                    return null;
            }

        }
        @Override
        public int getCount() {
            return Topics.length;
        }

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

    }

}

新闻片段Listview.Java

 ListView listView;
int positions;
ArrayList<NewsItem> newsItemList;
NewsAdapter adapter;
String  World ;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.geonews, container, false);
    listView = (ListView) view.findViewById(R.id.listview_news);
    if (savedInstanceState == null){
    }
    else{
        positions = savedInstanceState.getInt("position",0);
                }
    World = MainActivity.url;
    newsItemList = new ArrayList<>();

0 个答案:

没有答案