FragmentStatePagerAdapter tabhoast matireal design android中的碎片替换问题
我想将tabhoast与android的材料设计相结合,所以我写了下面的代码FragmentStatePagerAdapter tabhoast matireal design android中的碎片替换问题,android,android-fragments,android-tabhost,material-design,fragmentstatepageradapter,Android,Android Fragments,Android Tabhost,Material Design,Fragmentstatepageradapter,我想将tabhoast与android的材料设计相结合,所以我写了下面的代码 public class ActivityPaymentModule extends AppCompatActivity implements MaterialTabListener { private ViewPager pager; private MaterialTabHost tabHost; private ViewPagerAdapter pagerAdapter; private Resources r
public class ActivityPaymentModule extends AppCompatActivity implements MaterialTabListener {
private ViewPager pager;
private MaterialTabHost tabHost;
private ViewPagerAdapter pagerAdapter;
private Resources res;
public static int tabPosition = 0;
private AllMethods allMethods;
private String Titles[]={"Tab1","Tab2, "Tab3","Tab4"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_payment_module);
res = this.getResources();
allMethods = new AllMethods(ActivityPaymentModule.this);
Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolbar);
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setTitle("Demo");
this.setSupportActionBar(toolbar);
initControls();
setPagerAdapter();
}
private void initControls() {
tabHost = (MaterialTabHost)findViewById(R.id.materialTabHost);
pager = (ViewPager) this.findViewById(R.id.pager);
pagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
}
private void setPagerAdapter() {
pager.setAdapter(pagerAdapter);
tabHost.setAccentColor(Color.WHITE);
pager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// when user do a swipe the selected tab change
tabPosition = position;
tabHost.setSelectedNavigationItem(position);
}
});
for (int i = 0; i < pagerAdapter.getCount(); i++) {
tabHost.addTab(
tabHost.newTab()
.setText(Titles[i])
.setTabListener(this)
);
}
}
@Override
public void onTabSelected(MaterialTab materialTab) {
pager.setCurrentItem(materialTab.getPosition());
}
@Override
public void onTabReselected(MaterialTab materialTab) {
}
@Override
public void onTabUnselected(MaterialTab materialTab) {
}
private class ViewPagerAdapter extends FragmentStatePagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return new Fragment1();
}else if (position == 1) {
return new Fragment2();
}else if(position == 2){
return new Fragment3();
}
else {
return new Fragment4();
}
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
return Titles[position];
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.income_menu, menu);
menu.findItem(R.id.action_dasbboard).setVisible(false);
menu.findItem(R.id.action_feedback).setVisible(false);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case R.id.terms:
Intent browserIntent2 = new Intent(Intent.ACTION_VIEW, Uri.parse("http://worldofrental.com/terms-of-service/"));
startActivity(browserIntent2);
return true;
case R.id.policy:
Intent browserIntent3 = new Intent(Intent.ACTION_VIEW, Uri.parse("http://worldofrental.com/privacy-policy/"));
startActivity(browserIntent3);
case R.id.action_dasbboard:
return true;
case R.id.action_help:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://worldofrental.com/help-center/"));
startActivity(browserIntent);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
this.finish();
}
公共类ActivityPaymentModule扩展AppCompatActivity实现MaterialTableStener{
私人寻呼机;
私有材料主选项卡主机;
私人查看页面雷达;
私人资源;
公共静态int tabPosition=0;
私有所有方法所有方法;
私有字符串标题[]={“Tab1”、“Tab2”、“Tab3”、“Tab4”};
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u payment\u模块);
res=this.getResources();
allMethods=新的allMethods(ActivityPaymentModule.this);
Toolbar-Toolbar=(Toolbar)this.findviewbyd(R.id.Toolbar);
toolbar.setTitleTextColor(Color.WHITE);
toolbar.setTitle(“演示”);
此.setSupportActionBar(工具栏);
initControls();
setPagerAdapter();
}
私有控件(){
tabHost=(MaterialTabHost)findViewById(R.id.MaterialTabHost);
pager=(ViewPager)this.findViewById(R.id.pager);
pagerAdapter=新视图pagerAdapter(getSupportFragmentManager());
}
私有无效setPagerAdapter(){
寻呼机设置适配器(pagerAdapter);
tabHost.setAccentColor(Color.WHITE);
setOnPageChangeListener(新建ViewPager.SimpleOnPageChangeListener(){
@凌驾
已选择页面上的公共无效(内部位置){
//当用户进行刷卡时,所选选项卡将更改
tabPosition=位置;
tabHost.setSelectedNavigationItem(位置);
}
});
对于(int i=0;i
}
编辑
我面临两个问题:(1)当第一次加载我的屏幕时,Fragment1()和Fragment2()都被调用。(2)当我当时滑动fragment时,Fragment1()的位置不保持不变,就像我当时从右向左滑动Fragment1()时,Fragment3()和Fragment2()都被调用一样
当我第一次运行上述代码时,Fragment1()和Fragment2()两个碎片都被调用。当我滑动它时,碎片的位置也不能通过替换来保持,所以你知道我如何解决这个问题吗?你所有的建议都很好。当你滑动时,什么东西不能保持?你能详细说明一下吗,你的问题不是很清楚。谢谢卡维什·坎瓦尔:我面临两个问题:(1)当第一次加载我的屏幕时,Fragment1()和Fragment2()都被调用。(2)当我在那个时候滑动fragment时,Fragment3()和Fragment2()的位置与我在那个时候从右向左滑动Fragment1()的位置不同botj调用了当你刷卡时没有维护的内容?你能详细说明一下吗,你的问题不是很清楚。Thankskavesh Kanwal:我面临两个问题:(1)当第一次加载我的屏幕时,Fragment1()和Fragment2()都被调用。(2)当我当时刷卡Fragment1()时,FragmentReplace位置没有像刷卡Fragment1()时一样维护从右到左,此时Fragment3()和Fragment2()botj调用