gpt4 book ai didi

android - 通过 buttonClick 更改 viewpager fragment

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:45 24 4
gpt4 key购买 nike

我正在尝试通过单击按钮来更改 viewpager fragment 。我有 5 个 fragment ,每个 fragment 都有自己的 xml 文件(frag1.xml、frag2.xml 等)。每个 fragment 都有 5 个按钮,它们应该转到 viewpager 的其他页面。但问题是我如何在 FragmentPageAdapter 中检查单击了哪个按钮以及如何到达那里?

我会展示我的代码,然后我认为它应该很清楚。可以把它想象成底部有点的主屏幕,我点击某个点,就会转到相应的屏幕。

FragmentPagerAdapter

public class MyFragmentPagerAdapter extends FragmentPagerAdapter{

final int PAGE_COUNT = 6;

/** Constructor of the class */
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}

/** This method will be invoked when a page is requested to create */
@Override
public Fragment getItem(int arg0) {

switch(arg0){

case 0:

return new Fragment1();

case 1:
return new Fragment2();

case 2:
return new Fragment3();

case 3:
return new Fragment4();

case 4:
return new Fragment5();

default:
return null;

}
}

/** Returns the number of pages */
@Override
public int getCount() {
return PAGE_COUNT;
}
}

Frag1.java

public class Frag1 extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.frag_one, container, false);


OnClickListener changeFrag = new OnClickListener() {
@Override
public void onClick(View v) {
/*When I click this button in my fragment, I'd like it to go to fragment 3 for example*/
}
};

ImageButton btnT = (ImageButton) v.findViewById(R.id.frag3);
btnT.setOnClickListener(changeFrag);

return v;
}
}

主 Activity

公共(public)类 MainActivity 扩展 FragmentActivity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);/** Getting a reference to the ViewPager defined the layout file */
ViewPager pager = (ViewPager) findViewById(R.id.pager);

/** Getting fragment manager */
FragmentManager fm = getSupportFragmentManager();

/** Instantiating FragmentPagerAdapter */
MyFragmentPagerAdapter pagerAdapter = new MyFragmentPagerAdapter(fm);

/** Setting the pagerAdapter to the pager object */
pager.setAdapter(pagerAdapter);

//pager.setPageTransformer(true, new ZoomOutPageTransformer());
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}

这样的事情可能吗?有人可以帮助我朝着正确的方向前进吗?

最佳答案

我不确定你所说的“改变”到底是什么意思。

如果你问的是改变页面显示索引,你可以试试

ViewPager.setCurrentItem(int pageIndex, boolean isSmoothScroll);

或者,如果你问的是更改内容,这就是我所做的

public class MyPagerAdapter extends FragmentStatePagerAdapter
{
private FragmentManager fragMan;
private ArrayList<Fragment> fragments=new ArrayList<Fragment>();

public void clearAll() //You can clear any specified page if you want...
{
for(int i=0; i<fragments.size(); i++)
fragMan.beginTransaction().remove(fragments.get(i)).commit();
fragments.clear();
fragments=new ArrayList<Fragment>();
notifyDataSetChanged();
}

public void addList() //Add some new fragment...
{
listFrag=new ListFragment();
fragments.add(list);
}
}

希望对你有帮助~

关于android - 通过 buttonClick 更改 viewpager fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16761812/

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