当前位置: 首页 > 知识库问答 >
问题:

未添加片段(不一致崩溃)

柯正谊
2023-03-14

在我的MainActivity中,我有:

@Override
protected void onResume() {
    super.onResume();

    checkForCrashes();
    checkForTutorial();
    checkForUpdates();
    setStore();
    setup();
}

setup()中,我在回调中调用initializetabs():

protected void setup() {
    final Store s = getStore();
    setBackground();

    if (s == null) {
        unauthorizedHandler();
        return;
    }
    final Context mainActivity = this;
    fragments = getTabFragments();

    StoresController.getStoreDetails(s, mainActivity, new Callback<StoreDetailDecorator>() {
        @Override
        public void success(StoreDetailDecorator storeDetailDecorator, Response response) {
            s.prettyName = storeDetailDecorator.store.pretty_name;
            s.save();
            Log.v(TAG, s.prettyName);
            TextView toolbar_label = (TextView)findViewById(R.id.toolbar_label);
            toolbar_label.setText(MainActivity.getTruncatedMenuName(s.name()));

            SummaryTab t1 = (SummaryTab)fragments.get(0);
            t1.notifier = (SummaryTabLoadingNotifier)mainActivity;
            initializeTabs(s, fragments);
            t1.populateReport();
        }
    }
}

public void initializeTabs(Store s, List<Fragment> fragments ) {
    ViewPagerAdapter adapter =  new ViewPagerAdapter(getSupportFragmentManager(), getTabTitles(), fragments);
    ViewPager pager = (ViewPager) findViewById(R.id.pager);
    pager.setOffscreenPageLimit(2);
    pager.setAdapter(adapter);
}

对一些顾客来说,最后一条线是崩溃的。

java.lang.IllegalStateException: Fragment InfoTab{1bcb80f} is not currently in the FragmentManager
public class ViewPagerAdapter extends FragmentStatePagerAdapter {
    private CharSequence[] titles;
    private List<Fragment> fragmentList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager fragmentManager, CharSequence titles[], List<Fragment> fragmentList) {
        super(fragmentManager);
        this.titles = titles;
        this.fragmentList = fragmentList;
    }

    @Override
    public android.support.v4.app.Fragment getItem(int position) {
        return fragmentList.get(position);
    }

    @Override
    public CharSequence getPageTitle(int position) { return titles[position]; }

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

    @Override
    public Parcelable saveState() {
        return null;
    }
}

共有1个答案

怀洛华
2023-03-14

每次活动返回前台时都会调用onresume()

例如,如果您的一个用户按下home按钮并返回到您的应用程序,那么将再次调用getStoredetails(),当结果到达时,您将创建一个新的适配器(具有相同的旧片段列表)。

您应该实例化您的片段,创建一个适配器,并仅用适配器填充viewpager(oncreate()一次)。

 类似资料:
  • 我对Android应用程序很陌生,所以我希望能在这里找到一些帮助。我已经在这里搜索了我的问题并找到了一些东西,但这不起作用。 我想向FrameLayout添加一个片段,但它不起作用。我的目标是创建一个框架(/框架?)这总是存在的,用户可以与它交互,在这个框架内的一个特定的“窗口”中,我想显示页面/片段,总共五个,并且能够随时切换页面/片段,所以我有一个始终存在的框架,在这个动态变化的页面内。但现在

  • 本文向大家介绍android-fragments 添加片段,包括了android-fragments 添加片段的使用技巧和注意事项,需要的朋友参考一下 示例 静态添加片段 文件:activity_main.xml 文件:fragment1.xml 文件:fragment2.xml 文件:MainActivity.java 文件:Fragment1.java 文件:Fragment2.java 动态

  • 当我尝试将颤振视图/片段添加到ViewPager中时,出现以下错误: 2018-12-04 12:59:15.241 27893-27893/com。卡内基。opa。调试E/flatter:[错误:flatter/runtime/dart\u vm.cc(259)]vm快照必须有效。2018-12-04 12:59:15.241 27893-27893/*.opa。调试A/flatter:[致命:

  • 我的一些用户正在经历崩溃,这是Google Play开发者控制台上的崩溃报告中显示的错误:

  • 我正在学习Android Udacity课程,它已经过时了,所以我尝试通过手动添加一个片段到主活动中来更新它。这段代码构建得很好,但是当应用程序启动时,在android monitor中出现了一个很长的错误。 XML fragment_main.xml activity_main.xml list_itemm_forecast.xml 日志 06-23 11:23:02.878 3095-3095

  • 我是新来的python和创建不和谐的机器人在一般情况下,我不能为我的生命弄清楚如何让我的机器人分配一个角色给用户的用户请求。 我在互联网上搜索了几个小时,找到了一些例子,但它们都产生了错误。 以下是我的命令代码: 以下是我得到的错误: