Android Scrollable Tabs +滑动时滑动状态
我正在尝试使用多个Tabs创建一个应用程序。 对于每个标签,我使用不同的片段。 当我浏览标签时,它们中的信息正在发生变化。
如何在滑动时保存每个标签的状态?
代码例如:
MainActivity.java :
package com.tabs.example; import java.util.Locale; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.PagerTabStrip; import android.support.v4.view.ViewPager; public class MainActivity extends FragmentActivity { SectionsPagerAdapter mSectionsPagerAdapter; ViewPager mViewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.pager_tab_strip); pagerTabStrip.setBackgroundColor(Color.BLACK); pagerTabStrip.setTabIndicatorColor(Color.CYAN); pagerTabStrip.setTextColor(Color.WHITE); } public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { Fragment fragment; switch (position) { case 0: fragment = new Fragment1(); break; case 1: fragment = new Fragment2(); break; case 2: fragment = new Fragment3(); break; default: fragment = null; break; } return fragment; } @Override public int getCount() { return 3; } @Override public CharSequence getPageTitle(int position) { Locale l = Locale.getDefault(); switch (position) { case 0: return getString(R.string.title_section1).toUpperCase(l); case 1: return getString(R.string.title_section2).toUpperCase(l); case 2: return getString(R.string.title_section3).toUpperCase(l); } return null; } } }
Fragment1.java :
package com.tabs.example; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment1, container, false); DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); Date date = new Date(); String time = dateFormat.format(date); TextView tv1 = (TextView) root.findViewById(R.id.tv1); tv1.setText(time); return root; } }
Fragment2.java :
package com.tabs.example; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class Fragment2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment2, container, false); DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); Date date = new Date(); String time = dateFormat.format(date); TextView tv2 = (TextView) root.findViewById(R.id.tv2); tv2.setText(time); return root; } }
Fragment3.java :
package com.tabs.example; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; public class Fragment3 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View root = inflater.inflate(R.layout.fragment3, container, false); DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss"); Date date = new Date(); String time = dateFormat.format(date); TextView tv3 = (TextView) root.findViewById(R.id.tv3); tv1.setText(time); return root; } }
您可以通过设置ViewPagerAdapter来缓存它们,如下所示:
mViewPager.setOffscreenPageLimit(3);
- RuntimeException:无法实例化应用程序
- Android Webview应用程序上下文
- 在PDF中搜索单词并使用iText在android中提取它
- JSON,XML连接到Android的web api?
- 找不到类’twitter4j.http.AccessToken’
- 垂直RecyclerView中的动态不同图像水平RecyclerView,如Google Play商店
- 为什么android studio显示“在constraintlayout中缺少约束”的错误?
- JAVA RSA解密无法正常工作,抛出InvalidKeySpecException
- 无法通过AssetManager – libgdx从zip存档加载TextureAtlas