Android 如何替换选项卡中的事务片段

Android 如何替换选项卡中的事务片段,android,android-fragments,android-viewpager,Android,Android Fragments,Android Viewpager,我有一个安卓标签,有3个碎片和一个晶圆厂。我想在单击FAB时替换为一个新片段,但当我单击按钮时,它将替换为一个空白片段。当我点击我的标签时,它不会显示它的片段,而是一个空片段(有时它显示正确,但我不知道什么时候) 以下是我的主要活动: public class MainActivity extends AppCompatActivity { /** * The {@link ViewPager} that will host the section contents.

我有一个安卓标签,有3个碎片和一个晶圆厂。我想在单击FAB时替换为一个新片段,但当我单击按钮时,它将替换为一个空白片段。当我点击我的标签时,它不会显示它的片段,而是一个空片段(有时它显示正确,但我不知道什么时候)

以下是我的主要活动:

public class MainActivity extends AppCompatActivity {

    /**
     * The {@link ViewPager} that will host the section contents.
     */
    private ViewPager mViewPager;
    private TabLayout tabLayout;
    private FloatingActionButton fabAdd;
    FragmentManager manager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mViewPager = (ViewPager) findViewById(R.id.container);
        PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager());

        pageAdapter.addFragment(new Wallet(), "Wallet");
        pageAdapter.addFragment(new History(),"History");
        pageAdapter.addFragment(new Setting(),"Setting");

        mViewPager.setAdapter(pageAdapter);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);

        fabAdd = (FloatingActionButton) findViewById(R.id.fabAdd);
        manager = getSupportFragmentManager();

        fabAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                AddAccount addAccount = new AddAccount();
                FragmentTransaction transaction = manager.beginTransaction();
                transaction.replace(R.id.container,addAccount);
                transaction.commit();
            }
        });
    }
}
这是我的适配器:

public class AccountAdapter extends BaseAdapter {

    private Context context;
    private int layout;
    private List<Account> accountList;

    public AccountAdapter(Context context, int layout, List<Account> accountList) {
        this.context = context;
        this.layout = layout;
        this.accountList = accountList;
    }



    @Override
    public int getCount() {
        return accountList.size();
    }

    @Override
    public Object getItem(int i) {
        return null;
    }

    @Override
    public long getItemId(int i) {
        return 0;
    }

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        view = inflater.inflate(layout,null);

        TextView accountName = (TextView) view.findViewById(R.id.tvAccount);
        TextView accountAddress = (TextView) view.findViewById(R.id.tvAddress);

        Account account = accountList.get(i);
        accountName.setText(account.getAccountName());
        accountAddress.setText(account.getAccountAddress());

        return view;
    }
}
我是Android新手,英语不好,所以如果我犯了语法错误,请原谅我


编辑:有没有办法向viewpager显示新片段?

在onClick中使用此代码

Fragment fragment = new AddAccount();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.container, fragment);
ft.commit();
并将其用于适配器

class AccountAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}
class AccountAdapter扩展了FragmentPagerAdapter{
私有最终列表MFFragmentList=new ArrayList();
私有最终列表MFFragmentTitleList=new ArrayList();
公共视图页面编辑器(碎片管理器){
高级经理;
}
@凌驾
公共片段getItem(int位置){
返回MFFragmentList.get(位置);
}
@凌驾
public int getCount(){
返回MFFragmentList.size();
}
public void addFragment(片段片段,字符串标题){
添加(片段);
MFFragmentTitleList.add(标题);
}
@凌驾
公共字符序列getPageTitle(int位置){
返回MFFragmentTitleList.get(位置);
}
}

这不起作用。你能解释一下这个想法或解决方案吗?仅凭你的代码我无法理解
class AccountAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}