相关疑难解决方法(0)

片段onCreateView和onActivityCreated调用了两次

我正在使用Android 4.0 ICS和片段开发应用程序.

考虑ICS 4.0.3(API级别15)API的演示示例应用程序中的此修改示例:

public class FragmentTabs extends Activity {

private static final String TAG = FragmentTabs.class.getSimpleName();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    final ActionBar bar = getActionBar();
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);

    bar.addTab(bar.newTab()
            .setText("Simple")
            .setTabListener(new TabListener<SimpleFragment>(
                    this, "mysimple", SimpleFragment.class)));

    if (savedInstanceState != null) {
        bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
        Log.d(TAG, "FragmentTabs.onCreate tab: " + savedInstanceState.getInt("tab"));
        Log.d(TAG, "FragmentTabs.onCreate number: " + savedInstanceState.getInt("number"));
    }

}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putInt("tab", getActionBar().getSelectedNavigationIndex());
}

public static class TabListener<T extends Fragment> implements ActionBar.TabListener { …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-4.0-ice-cream-sandwich

96
推荐指数
5
解决办法
10万
查看次数

OnCreateView多次调用/使用ActionBar和Fragments

我将我的应用程序的一部分从活动切换到碎片,以便我可以使用整洁的ActionBar选项卡.

但是,在完成转换后,我遇到了一个问题:每当我切换到另一个选项卡时,Fragment都会重新创建.每次进入选项卡时都会调用onCreate和onCreateView.

我有4个选项卡,每个选项卡都打开这些片段之一:

Fragment ShopFragment = new WebActivity();
Fragment SearchFragment = new SearchActivity(context);
Fragment StoreFragment = new StoreLocatorActivity(context, this);
Fragment BlogsFragment = new BlogsActivity(context, this);
Run Code Online (Sandbox Code Playgroud)

这是我的监听器代码:

    class MyTabsListener implements ActionBar.TabListener {
        public Fragment fragment;

        public MyTabsListener(Fragment fragment) {
            this.fragment = fragment;
        }

        @Override
        public void onTabReselected(Tab tab, FragmentTransaction ft) {
            ft.hide(fragment);
        }

        @Override
        public void onTabSelected(Tab tab, FragmentTransaction ft) {
            ft.replace(R.id.fragment_container, fragment);
        }

        @Override
        public void onTabUnselected(Tab tab, FragmentTransaction ft) {          

        }

    }
Run Code Online (Sandbox Code Playgroud)

有人可以指点我正确的方向吗?

android android-fragments android-activity android-actionbar

41
推荐指数
2
解决办法
3万
查看次数

Android oncreateview调用了两次

我已经在这里问过这个问题不止一次,但我无法弄明白如何解决我的问题.

我有一个用户执行此操作的应用:

1 - 打开navigationDrawer并选择一个选项(创建一个片段)(我在这里选择第二个选项);

public void selectItem(int position) {
        Fragment fragment = null;
        switch (position) {
            case FRAGMENT_OPTION1:
                ...
                break;
            case FRAGMENT_OPTION2:
                fragment = ControlPanelFragment.newInstance();
                break;
            ...
            case FRAGMENT_OPTIONN:
                ...
                return;
            default:
                break;
        }
        if (fragment != null) {
            FragmentManager fragmentManager = getSupportFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.fragment_container, fragment).commitAllowingStateLoss();
        }
}
Run Code Online (Sandbox Code Playgroud)

2 - 加载所选选项(ControlPanelFragment):2.1 - 控制面板包含选项卡和iconpager.对于每个寻呼机页面和每个选项卡,都会创建一个新的片段.我有3个标签和3个页面,因此创建了9个片段;

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    if (savedInstanceState != null) {
        currentControlPanelOption = savedInstanceState.getInt("currentControlPanelOption", currentControlPanelOption);
        currentControlPanelTab = savedInstanceState.getInt("currentControlPanelTab", currentControlPanelTab);
    }
    setControlPanelTabs();
    setIconPager(); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager

9
推荐指数
1
解决办法
1万
查看次数