gpt4 book ai didi

android - 替换 View 寻呼机中的 fragment

转载 作者:行者123 更新时间:2023-11-29 21:46:33 25 4
gpt4 key购买 nike

我正在尝试找到一个与此类似的解决方案 https://stackoverflow.com/a/13925130/1634451但海报没有解释 R.id.products_list_linear 是什么。我尝试将 R.id.products_list_linear 设置为我要替换的 fragment 的线性布局的 ID。但这只是将 2 个 fragment 叠加在一起。我很确定我需要在 viewpager 中获取容器的 ID,但我不知道如何获取此 ID。

编辑:为了澄清,我正在尝试用另一个 View 寻呼机替换一个 fragment ,我的代码看起来几乎与我发布的答案完全一样,但是当我制作 R.id.products_list_linear 时,我试图替换 fragment 的 I'd 布局。我要替换的 fragment 只是覆盖在我要替换的 fragment 上

最佳答案

在 View 分页器中替换 fragment

试试这个定制的 ViewPager Adapter,..

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.view.ViewGroup;

public class ViewPagerAdapter extends FragmentStatePagerAdapter {
private List<Fragment> fragments=null;
private FragmentManager fragmentManager=null;

public ViewPagerAdapter(FragmentManager fragmentManager,List<Fragment> fragments) {
super(fragmentManager);
this.fragments=fragments;
this.fragmentManager=fragmentManager;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object)
{
super.setPrimaryItem(container,0,object);
}
@Override
public void notifyDataSetChanged()
{
super.notifyDataSetChanged();
}
@Override
public void destroyItem(ViewGroup collection, int position, Object view) {
fragmentManager.executePendingTransactions();
fragmentManager.saveFragmentInstanceState(fragments.get(position));
}
public void replaceItem(int position,Fragment fragment)
{
fragments.set(position, fragment);
this.notifyDataSetChanged();
}
}

以 fragment 作为参数从 Activity 中调用它,

List<Fragment> fragments = new Vector<Fragment>();
fragments.add(Fragment.instantiate(this, Fragment1.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment2.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment3.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment4.class.getName()));
fragments.add(Fragment.instantiate(this, Fragment5.class.getName()));
mPagerAdapter=new ViewPagerAdapter(getFragmentManager(), fragments);

当您替换 viewPager 中的 View /fragment 然后使用时,

mPagerAdapter.replaceItem(2,Fragment.instantiate(this, Fragment5.class.getName()));

关于android - 替换 View 寻呼机中的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15649749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com