gpt4 book ai didi

android - 如何刷新 FragmentPagerAdapter 的 fragment ?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:10 27 4
gpt4 key购买 nike

我使用 TabPageIndicatorFragmentPagerAdapter 库获得了 2 个标签,分别称为 tab1(主页)和 tab2(个人资料)。

在 tab2 中,我有一个名为“登录”的按钮(tab2 扩展 abc.xml)。

当用户点击“登录”按钮时,应用程序将在新 Activity 中显示登录表单。登录后, Activity 结束,tab2 的内容 View 将发生变化(它显示用户的个人资料,因为它会膨胀 xyz.xml)。我该怎么做?

public class MainActivity extends SherlockFragmentActivity {
private static String[] TAB_NAMES = null;
private Context context = this;
private static FragmentPagerAdapter adapter ;
@Override
protected void onCreate(Bundle savedInstanceState) {

if (TAB_NAMES == null) {
TAB_NAMES = new String[] {
getResources().getString(R.string.tab_home),
getResources().getString(R.string.tab_profile) };
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

adapter = new TabsAdapter(
getSupportFragmentManager());

ViewPager pager = (ViewPager) findViewById(R.id.pager);

pager.setAdapter(adapter);


TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(pager);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater infalter = getSupportMenuInflater();
infalter.inflate(R.menu.main_menu, menu);
return true;
}

class TabsAdapter extends FragmentPagerAdapter {
public TabsAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return HomeFragment.getInstance();
case 1:
return new ProfileFragment();

default:
return HomeFragment.getInstance();
}
}
}

最佳答案

您可以使用 FragmentStatePagerAdapter 而不是 FragmentPagerAdapter

你可以这样尝试:

private static FragmentStatePagerAdapter adapter ;
private static String[] TAB_NAMES = null;

@Override
protected void onCreate(Bundle savedInstanceState) {

if (TAB_NAMES == null) {
TAB_NAMES = new String[] {
getResources().getString(R.string.tab_home),
getResources().getString(R.string.tab_profile) };
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

adapter = new FragmentStatePagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return HomeFragment.getInstance();
case 1:
return new ProfileFragment();

default:
return HomeFragment.getInstance();
}
}

@Override
public int getCount() {
return TAB_NAMES.length;
}

@Override
public int getItemPosition(Object fragItem) {
int position = 0;
if (fragItem instanceof HomeFragment) {
position = 0;
} else if (fragItem instanceof ProfileFragment) {
position = 1;
}
return (position >= 0) ? position : POSITION_NONE;
}
}

ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);


TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(pager);

}

引用

可以查看this解决方案。

关于android - 如何刷新 FragmentPagerAdapter 的 fragment ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709894/

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