Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
FragmentStatePagerAdapter tabhoast matireal design android中的碎片替换问题_Android_Android Fragments_Android Tabhost_Material Design_Fragmentstatepageradapter - Fatal编程技术网

FragmentStatePagerAdapter tabhoast matireal design 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

我想将tabhoast与android的材料设计相结合,所以我写了下面的代码

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调用