gpt4 book ai didi

android - 延迟后显示的 ViewPager fragment 中的操作栏项目

转载 作者:行者123 更新时间:2023-11-29 01:53:05 26 4
gpt4 key购买 nike

我正在使用 ActionBarSherlock,我的主要 Activity 有一个包含三个页面的 ViewPager,所有页面都是 fragment 。其中一个 fragment 有一个 onCreateOptionsMenu 方法,并且主 Activity 中的操作栏已正确更新......有点。方法如下:

public void onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu, com.actionbarsherlock.view.MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.search, menu);
// A couple of other things
}

我正在使用自定义 FragmentPagerAdapter:

public class SectionsPagerAdapter extends FragmentPagerAdapter {
FragmentManager fm;

public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
this.fm = fm;
}

@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
accountFragment = Account.newInstance();
return accountFragment;
case 1:
filesFragment = Files.newInstance();
return filesFragment;
case 2:
transfersFragment = Transfers.newInstance();
return transfersFragment;
}
return null;
}

private String makeFragmentName(int viewId, int index) {
return "android:switcher:" + viewId + ":" + index;
}

@Override
public int getCount() {
return 3;
}

@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return titleAccount;
case 1:
return titleFiles;
case 2:
return titleTransfers;
}
return null;
}
}

我的 Activity 中根本没有调用 supportInvalidateOptionsMenu 的代码,所以我假设框架正在为我检查 fragment 的选项菜单,但我不喜欢它的工作方式。这就是我的意思:

the problem

股票应用程序(电话、人等)以及其他一些应用程序可以正确执行此操作。也就是说,只要我翻到一个页面,就会显示该新页面的菜单项。但在我的中,它们仅在滑动动画结束时显示。

这是我尝试过的:

pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
supportInvalidateOptionsMenu();
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {}
@Override
public void onPageScrollStateChanged(int arg0) {}
});

这似乎什么都不做。

日志显示 onPageSelected 在我滑动到另一个页面时被调用,这是我想要更新项目的时候。登录我的 fragment 的 onCreateOptionsMenu 显示它仅在动画结束时调用,这与调用 onPageSelected 时有相当长的延迟。

我该如何解决这个问题?

最佳答案

Stock apps (Phone, People, etc) as well as some other apps do this correctly. That is, as soon as I fling to a page, that new page's menu items are displayed. But in mine, they are only displayed at the end of the swiping animation.

我无法在运行 4.2.2 的 Galaxy Nexus 上使用 Phone 重现您的行为。在那里,操作栏不会更改,直到新页面完全可见,无论是滑动还是滑动。

有了联系人,我看到了你所看到的,因为当手指抬起时操作栏会发生变化,所以在一瞬间,变化发生得更快。

坦率地说,我认为您是小题大做了。也就是说,我能看到复制联系人行为的唯一方法是完全重新实现 FragmentPagerAdapter , 删除 setMenuVisibility()来自 setPrimaryItem() 的电话,然后安排在您认为更合适的时间调用这些电话。

关于android - 延迟后显示的 ViewPager fragment 中的操作栏项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16778970/

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