Giter Site home page Giter Site logo

fragmentation's People

Contributors

amibition521 avatar beilo avatar frowhy avatar kangqiao avatar liaolintao avatar lollo0520 avatar mengdd avatar niulinguo avatar pye52 avatar qiyulan avatar vankain avatar williamwue avatar yokeyword avatar zhangluya avatar zhenian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

fragmentation's Issues

如何监听fragment切换动画

如果在fragment的onCreateView()或onViewCreated()方法中直接显示ProgressDialog或加载List,在过场动画的执行的时候会突然很明显的卡壳一下.有没有好办法解决?

getTopFrament()方法存在bug

fragmentManager.getFragments()返回的fragment序列可能与实际的顺序不一致,导致无法获取正确的栈顶fragment

问个细节问题

  1. AS 里有个 Monitors 可以监控内存使用情况。
  2. ViewPager with 3个Fragment。
  3. 无论使用 FragmentPagerAdapter 或是 FragmentStatePagerAdapter,每一次 swipe viewpager 后,内存消耗都会有 0.01 或 0.02 MB 的增长,持续增长。
  4. setOffscreenPageLimit(2) 后就不会有这个情况。
  5. 是 Viewpager populate 的过程中消耗了内存,还是 destoryItem 时释放的内存和 instantiateItem 是申请的内存不对等。
  6. 我是没找到答案,也许你能帮我。

你好,在你的新版本中是在Activity中创建一开始就创建几个fragment,能否不这么做?

@YoKeyword
你好,在你的新版本中是在Activity中创建一开始就创建几个fragment,能否不这么做?
你的思路是一进Activity就通过以下代码创建了几个fragment

`if (savedInstanceState == null) {
mFragments[FIRST] = MultiFirstFragment.newInstance();
mFragments[SECOND] = MultiSecondFragment.newInstance();
mFragments[THIRD] = MultiThirdFragment.newInstance();
mFragments[FOURTH] = MultiFourthFragment.newInstance();

        loadMultipleRootFragment(R.id.fl_container, FIRST,
                mFragments[FIRST],
                mFragments[SECOND],
                mFragments[THIRD],
                mFragments[FOURTH]);
    } else {
        // 这里库已经做了Fragment恢复,所有不需要额外的处理了, 不会出现重叠问题

        // 这里我们需要拿到mFragments的引用,也可以通过getSupportFragmentManager.getFragments()自行进行判断查找(效率更高些),用下面的方法查找更方便些
        mFragments[FIRST] = findFragment(MultiFirstFragment.class);
        mFragments[SECOND] = findFragment(MultiSecondFragment.class);
        mFragments[THIRD] = findFragment(MultiThirdFragment.class);
        mFragments[FOURTH] = findFragment(MultiFourthFragment.class);
    }`

然后根据底部的BottomBar来切换,通过代码showHideFragment(mFragments[position], mFragments[prePosition]);来隐藏或者显示以达到切换fragment的目的。你这里是做了Fragment的恢复。
但是假如这里面的每个fragment都有网络请求,那样就会一进Activity就都访问了网络,这样不是很好,有的fragment可能用户压根就不会点击进去,所以白白耗费了流量。是否有个比较好的法子,懒加载的方式,用户点击了才底部相应的icon才创建这个fragment。这样会好一些。不知道是不是我的理解有错误,或者你还有一套新的方案我不知道的。支持你

How to refresh bootombar again?

I am initiating my one of fragment by below code. (i.e. WishList Frgagment)

mFragments[FOURTH] = WishListContainerFragment.newInstance();

i have five tabs in bottombar for your refrence.

public class WishListContainerFragment extends BaseLazyMainFragment {

 public static WishListContainerFragment newInstance() {
    Bundle args = new Bundle();
    WishListContainerFragment fragment = new WishListContainerFragment();
    fragment.setArguments(args);
    return fragment;
 }

 @Nullable
 @Override
 public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable    Bundle savedInstanceState) {
     View view = inflater.inflate(R.layout.multi_container_fragment, container, false);
    return view;
 }

  @Override
 protected void initLazyView(@Nullable Bundle savedInstanceState) {
    /*Need to call every time when user presses on same tab.*/
    if (savedInstanceState == null) {
        boolean isUserLoggedIn = AppGlobal.getBooleanPreference(_mActivity, AppConstant.PREF_IS_USER_LOGGED_IN);
        if (isUserLoggedIn){
            loadRootFragment(R.id.fl_child_container, WishListFragmentNew.newInstance());
        }else{
            loadRootFragment(R.id.fl_child_container, LoginContainerFragment.newInstance());
        }
    }
} 
  }

Now i want to call initLazyView every time when user presses on same tab. How should i achieve that?

or is there any other recommendation by you for archiving same thing? i want to replace rootContainerFragment on same tab, based on some situations. for example user logged in or not.

Please reply asap. Thanks in advance.

同级 Fragment 回退问题

比如 依次点击 A B C D 四个同级Fragment,返回时候 可以回退吗, 现在 同级的demo 是返回第一个

Disable Navigation Drawer

Hi,
When "BaseBackFragment" is extended by a fragment, the BACK Button is shown on the TOOLBAR, but if the user swipe from the left edge of the screen the NAVIGATION DRAWER pops open.

Can you implement a method of something so that what the "BaseBackFragment" is extended, the NAVIGATION DRAWER will be disabled, and when the user presses the BACK button the NAVIGATION DRAWER will be enabled.

Thanks so much for this awesome library.

screenshot_20160705-152844
screenshot_20160705-153004

缓存问题

您好。
demo中,进入startForResult页面后,旋转screen方向,返回,二级详情页面的数据就没有了,但是再次旋转screen(停留在详情页面),数据又恢复了。

popBackStack使用

阅读了您在简书上的文章,有几个问题咨询一下:
1、按照你的说法 remove是有问题的,为什么startWithPop中调用了fragmentManager.beginTransaction().remove(from).commit();接口
2、startWithPop中调用了handleBack(); handleBack()中调用了fragmentManager.popBackStack();
紧接着在startWithPop中调用了事物处理,FragmentTransaction ft = fragmentManager.beginTransaction()
.setTransition(
FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.add(from.getContainerId(), to, toName)
.addToBackStack(toName);

按照你文章的说法:"如果你想在出栈后,立刻beginTransaction()开始一项事务,你应该把事务的代码post到主线程的消息队列里',但是您的startWithPop没有通过post方法。
是不是只有调用popBackStackImmediate才使用post方法,因为:popBackStackImmediate是立刻出栈,popBackStack是放在主线程尾部

你好,SwipeBackActivity这个用在我项目里,只有简单的Activity(比如Activity里没有fragment)才可以侧滑退出效果。

@YoKeyword
你好,SwipeBackActivity这个用在我项目里,只有简单的Activity(比如Activity里没有fragment)才可以侧滑退出。
于是我尝试着在你项目里的三个Activity全加上SwipeBackActivity,
同时都加了getSwipeBackLayout().setEdgeOrientation(SwipeBackLayout.EDGE_ALL);
三个Activity也都设置了 true
只有EnterActivity和flow.MainActivity这两个Activity有侧滑效果,唯独仿知乎的那个Activity没有侧滑退出效果。我的项目也是类似你仿知乎的demo,内嵌很多平级fragment,也没有侧滑退出效果,但是简单的Activity就有侧滑退出效果。我用的系统版本是4.2的真机和系统版本是4.4的模拟器,两者都如上所述。
你有空可以看看是不是有这个问题。
我估计是滑动事件被拦截了还怎么个原因。^_^

你好,请问使用您的框架后,如何让fragment只创建一次?

你好,请问使用您的框架后,如何让fragment只创建一次?

我现在的需求类似于你仿知乎的主页,底部有个底部导航BottomBar, 用的是一个第三方的。现在来回切换的时候总是重新创建,请求网络。我现在想只在第一次点击开的时候创建fragment,请求网络获取数据,以后再点击到这一项的时候只要show。我看了你的代码有有个showHideFragment(mFragments[position], mFragments[prePosition]);
我用的这个BottomBar在点击选中回调public void onTabSelected(int position, boolean wasSelected)
没有int prePosition这种参数。

请问我要怎么来隐藏之前的fragment,是用getTopFragment();吗?

bottomNavigation.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() {
@OverRide
public void onTabSelected(int position, boolean wasSelected) {
switch (position) {
case 0:
YaLiJiFragment fragment0 = findFragment(YaLiJiFragment.class);
if (fragment0 == null) {
popTo(YaLiJiFragment.class, false, new Runnable() {
@OverRide
public void run() {
start(YaLiJiFragment.newInstance());
}
});
} else {
// 如果已经在栈内,则以SingleTask模式start
start(fragment0, SupportFragment.SINGLETASK);
}

                    break;

                case 1:

                    WannengjiFragment fragment1 = findFragment(WannengjiFragment.class);
                    if (fragment1 == null) {
                        popTo(YaLiJiFragment.class, false, new Runnable() {
                            @Override
                            public void run() {
                                start(WannengjiFragment.newInstance());
                            }
                        });
                    } else {
                        // 如果已经在栈内,则以SingleTask模式start
                        start(fragment1, SupportFragment.SINGLETASK);
                    }

                    break;

                case 2:

                    LaboratoryStatisticFragment fragment3 = findFragment(LaboratoryStatisticFragment.class);
                    if (fragment3 == null) {
                        popTo(YaLiJiFragment.class, false, new Runnable() {
                            @Override
                            public void run() {
                                start(LaboratoryStatisticFragment.newInstance());
                            }
                        });
                    } else {
                        // 如果已经在栈内,则以SingleTask模式start
                        start(fragment3, SupportFragment.SINGLETASK);
                    }
                    break;
            }
        }
    });

快速点击还是会启动多个

用了最新版,在项目中使用发现快速点击还是有启动多种情况的问题。我log的结果是动画执行完毕,页面已经启动还没完全显示的时候,可以点击到下面的fragment

同级别实现不重复加载

你好,我同级别的实现不重复加载。
现在遇到一个问题。
我有MainFragment/BFragment/CFragment/DFragment
在普通的切换时候已经实现了不重复加载。通过add/show来控制实现的。
但是现在我的CFragment中,需要传递一个Type,来区分CFragment要去加载什么数据。
第一次,进入时候是正常的。
CFragment中有一个按钮,可以选择Type,我点击该按钮,选择另外一个类型时候,这个时候需要重新刷新该页面,这块控制逻辑有点懵了。。
感谢您抽出宝贵时间指教下。
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Bundle bundle = new Bundle();
Fragment fragment = null;
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
mSpinnerAdapter.setCheckPos(position);
switch (position) {
case 1:
bundle.putSerializable("mType", MaopaoListFragment.Type.friends);
maopaoListFragment = new MaopaoListFragment_().newInstance(MaopaoListFragment.Type.friends);
maopaoListFragment.setArguments(bundle);
ft.add(R.id.container, maopaoListFragment, strings[position]);
break;

                case 2:
                        bundle.putSerializable("mType", MaopaoListFragment.Type.hot);
                        maopaoListFragment = new MaopaoListFragment_().newInstance(MaopaoListFragment.Type.hot);
                        maopaoListFragment.setArguments(bundle);
                        ft.add(R.id.container, maopaoListFragment, strings[position]);
                    break;

                case 0:
                default:
                        bundle.putSerializable("mType", MaopaoListFragment.Type.time);
                        maopaoListFragment = new MaopaoListFragment_().newInstance(MaopaoListFragment.Type.time);
                        maopaoListFragment.setArguments(bundle);
                        ft.add(R.id.container, maopaoListFragment, strings[position]);
                    break;
            }

hide和show的时候怎么加动画?

0.7用着相当爽啊,解决了我很多问题,但是想在hide和show的时候也有转场动画。自己扩展了一下,但是setFragmentClickable()状态有时不对

0.6.3版本的防抖动处理应该是有问题的

Fragmentation中代码

    void dispatchStartTransaction(SupportFragment from, SupportFragment to, int requestCode,
                                  int launchMode, int type) {
        //省略
        // 这里将Activity的Clickable标识设置为false,在SingleTask/SingleTop启动模式之后 开启防抖动
        mActivity.setFragmentClickable(false);
        //省略
    }

这里将Clickable设置为false
SupportFragment中代码


    private void handleNoAnim() {
        //如果在Activity或Fragment设置了进入动画,mNeedDebounce为false
        if (mFragmentAnimator.getEnter() == 0) {
            mNeedDebounce = true;
            mFragmentAnimator.setEnter(R.anim.no_anim);
        }
    }

    private void initAnim() {
        handleNoAnim();

        mNoAnim = AnimationUtils.loadAnimation(_mActivity, R.anim.no_anim);
        mEnterAnim = AnimationUtils.loadAnimation(_mActivity, mFragmentAnimator.getEnter());
        //省略
        //mNeedDebounce为false,
        if (mNeedDebounce) {
            _mActivity.setFragmentClickable(true);
        }
        //这里并没有给mNoAnim设置监听, 监听动画状态(for防抖动)
        mEnterAnim.setAnimationListener(new DebounceAnimListener());
    }

    @Override
    public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
        if (_mActivity.mPopMulitpleNoAnim || mLocking) {
            return mNoAnim;
        }
        if (transit == FragmentTransaction.TRANSIT_FRAGMENT_OPEN) {
            if (enter) {
                if (mIsRoot) {
                    //满足条件很简单,由于只是给 mEnterAnim设置了动画监听,mNoAnim结束后无法还原 
                    //Activity的点击状态
                    return mNoAnim;
                }
                return mEnterAnim;
            } else {
                return mPopExitAnim;
            }
        } else if (transit == FragmentTransaction.TRANSIT_FRAGMENT_CLOSE) {
            if (enter) {
                return mPopEnterAnim;
            } else {
                return mExitAnim;
            }
        }
        return null;
    }


跳转问题

2016-07-01 16 59 22

请问有没有什么办法 从一个Dialog直接跳转到CycleFragment
无论这个dialog是在应用的哪个界面弹出来的
谢谢

打开新页面直接使用DialogFragment这种方式怎么样?

发现你的代码在打开一个新fragment(要加入回退栈)的时候,会隐藏from这个fragment,这样做可以避免过度绘制。用DialogFragment的show方法的话,也能做到同样的效果,不用隐藏from的fragment了,而且不用指定containerId,只要把style指定成全屏的就行。不知道这种方式会不会更好。

RunTimeException


 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.everytime/com.everytime.ui.main.MainActivity}: java.lang.NullPointerException: Attempt to read from field 'boolean android.support.v4.app.BackStackRecord.mAddToBackStack' on a null object reference

好像是只要在App上次是崩溃的情况下,再进去就会发生这样的情况,卸载了再重装也会这样 ,很奇怪。


if (savedInstanceState == null) {
            loadRootFragment(R.id.container, TopicFragment.newInstance());
        }

这里是调用代码的地方

右滑退出fragment时经常会误操作

在右滑退出的fragment中滑动时,如果不从边缘触发,那么滑动左右滑动手势会被识别成点击,从而触发点击事件,而且必现

[其他问题]System.err: java.lang.IllegalArgumentException: Wrong state class

业务逻辑比较麻烦,viewPager + Fragment 顶部的导航条根据返回的数据动态添加。
总共三种类型,就分了三个Fragment。在 ViewPagerAdapter getItem中用newInstance(id)来获取,id不相同。
RecyclerView 在不同的Fragment里面是用的不同的id的,在OnCreateView里面 initView(view)初始化。
在 OnDestroyView() 里 mRecy_news.getRefreshableView().setAdapter(null);
但是在左右滑动的时候出现了下面的错误代码,并且闪退。

E/InputEventReceiver: Exception dispatching input event.
E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
E/MessageQueue-JNI: java.lang.IllegalArgumentException: Wrong state class, expecting View State but received class android.support.v7.widget.RecyclerView$SavedState instead. This usually happens when two views of different type have the same id in the same hierarchy. This view's id is id/fragmetn_own_pager_rv. Make sure other views do not use the same id.
at android.view.View.onRestoreInstanceState(View.java:13810)
at com.handmark.pulltorefresh.library.PullToRefreshBase.onRestoreInstanceState(PullToRefreshBase.java:833)
at android.view.View.dispatchRestoreInstanceState(View.java:13786)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2889)
at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2897)
at android.view.View.restoreHierarchyState(View.java:13764)
at android.support.v4.app.Fragment.restoreViewState(Fragment.java:465)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1094)
at android.support.v4.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1430)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:732)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1177)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1025)
at android.support.v4.view.ViewPager.onInterceptTouchEvent(ViewPager.java:2050)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1960)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2390)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1734)
at android.app.Activity.dispatchTouchEvent(Activity.java:2830)
at me.yokeyword.fragmentation.SupportActivity.dispatchTouchEvent(SupportActivity.java:240)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2351)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2049)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2407)

搜索了很久,试验了重写ViewPager捕捉异常,view判断为空复用,判断Recycler状态再初始化,都没用。

[其他问题]error

android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1493)
2 android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1511)
3 android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:638)
4 android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:617)
5 whatsmode.com.mode2.app.Fragmentation.showHideFragment(Fragmentation.java:191)
6 whatsmode.com.mode2.app.SupportFragment.showHideFragment(SupportFragment.java:382)
7 whatsmode.com.mode2.module.feed.view.fragment.MainFragment$1.onTabSelected(MainFragment.java:126)
8 whatsmode.com.mode2.ui.BottomBar$1.onClick(BottomBar.java:74)
9 android.view.View.performClick(View.java:5697)
10 whatsmode.com.mode2.ui.BottomBar$2.run(BottomBar.java:97)
11 android.os.Handler.handleCallback(Handler.java:739)
12 android.os.Handler.dispatchMessage(Handler.java:95)
13 android.os.Looper.loop(Looper.java:158)
14 android.app.ActivityThread.main(ActivityThread.java:7237)
15 java.lang.reflect.Method.invoke(Native Method)
16 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
17 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

你好,框架的跨界面跳转问题

我研究你的仿知乎的demo的时候,想增加一个需求,从一个新的activity跳转到ViewPagerFragment下的热门这个页面。。
我用的以下方式
mFragments[SECOND].findChildFragment(ViewPagerFragmentMy.class).switchFragment(1);这种方式会报下面的空指针,一脸懵逼啊,跪求大神赐教

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'me.yokeyword.fragmentation.SupportFragment me.yokeyword.fragmentation.Fragmentation.findStackFragment(java.lang.Class, android.support.v4.app.FragmentManager, boolean)' on a null object reference

真心希望大神在百忙之中劳神看看是什么问题。。。

真棒

感谢作者给出的干货。都是赤裸裸的经验啊。收下我的膝盖。

现在也是用1个Activity来管理fragment(听了QQ音乐的人说他们是这样做的。所以尝试了下)

遇到一个问题fragment的pop动画没有显示。push动画正常走

 public void pushFragment(Fragment toFragment) {
        if (toFragment == null) return;
        getSupportFragmentManager()
                .beginTransaction()
                .setCustomAnimations(R.anim.push_right_in, R.anim.push_right_out)
                .add(R.id.fl_common_frame, toFragment, toFragment.getClass().getName())
                .addToBackStack(toFragment.getClass().getName())
                .commit();
    }

还有一个问题,快速点击的时候,会弹出好几个fragment ,有遇到吗?

谢谢~Gn

有两个bug不知道能否修复

1,如果添加了viewTreeoberser,就是那个监听viewtree创建完成的事件,会导致fragment的动画不能正常显示;
2,如果在onhidedchanged 里操作view会让fragment动画不能正常展示,(会有个奇怪的延迟)

back from other activity,fragment activity show slow

A activity is a SupportActivity,A open an Activity B,B is a normal Activity.
When at B press back key,A show slow(probably 3 sec).
I debug all A activity function onResume() cost 35ms, onPostResum() cost 300400ms
Does any one know what cause this problem?

关于项目上传到jcenter的一些问题

您好,您的项目我也有在使用,我想问一个非项目相关的问题,最近我在为把自己的项目上传到jcenter发愁,我看到您项目中也包含了javadoc注释,并且已经上传到jcenter了。有几个问题想请教一下您:

  1. 在项目中包含注释在生成javadoc这个task中失败该如何解决,我查了一下资料说是java8的问题。
  2. 如果在项目中有android.support.v4这个包,运行bintrayUpload也会报错,找不到一些support的类。
  3. 还有些时候会出现build/poms/pom-default.xml (没有那个文件或目录)这种错误。
    打扰了,谢谢

Fragment上所有组件无法点击

先启动一个Activity
image
在这个Activity默认开始登陆界面(一个Activity多个Fragment实现登录、注册流程)
image
发现LoginFragment界面是出来了,但是所有组件都不能点击,输入框也不能获取焦点。研究了大半天,没找出个所以然,不知道这是不是个bug。

如何解决fragment重复加载问题?

我根据你的demo调用的。
MainFragment_ mainFragment = findFragment(MainFragment_.class);
if (mainFragment == null) {
popTo(MainFragment_.class, false, new Runnable() {
@OverRide
public void run() {
start(MainFragment_.newInstance());
}
});
} else {
// 如果已经在栈内,则以SingleTask模式start
start(mainFragment, SupportFragment.SINGLETASK);
}

首页好像是不自动加载了,但是切换到其它同级Fragment时候,每次都要重新加载,用Fragmentation可以解决吗?求解答,急~~万分感谢!

proguard

When i open proguard ,There are many issues
Like This:
buildTypes {
release {
debuggable false
minifyEnabled true //是否开启混淆
shrinkResources true //此属性配合minifyEnabled混淆使用
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
debuggable true
minifyEnabled true //是否开启混淆
shrinkResources true //此属性配合minifyEnabled混淆使用
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

方法名称

这个不算ISSUE, 顶多算个提示, setFramgentResult()应该是拼写有误,Framgent 应该是 Fragment, 一起完善这个库😀

关于 app 内存重启恢复

我开启 『开发者选项』->『不保留活动』 运行您的 Demo ,然后按下 Home 键,再次打开 app 没有被杀掉,或者是自动恢复了我没看出来。
QQ 和 微信 都是 10s 后就重启了。我自己用您的库也会重启,有时候Fragment 可以恢复,但是有些变量报空指针,这样即使 Fragment 恢复 意义也不是很大。
请问这种问题有什么解决办法。

一种实用场景

比如demo里,在微信的一个tab页,进入循环页面,点击一个按钮,需要触发“销毁所有的循环页,并且切换到第二个tab页的第二个标签(陌生人)”,不知道是否能实现这个逻辑?

fragment的部分类容被状态栏遮挡

主界面的Activity有中的Fragment没有全屏展示,但是新的fragment全屏展示了,有部分类容被状态栏挡住了。主Activity侧滑时背景是黑色,也在主题中设置了true

透明Fragment

如何显示一个透明的Fragment,源码里直接给设置成了windowBackground

跳转到新的fragment 参数没带过去

我在adapter中跳转到新的fragment 参数没带过去 ,有空给看看呗
ReceiptDetailsPage fragment = mFragment.findFragment(ReceiptDetailsPage.class);
if (fragment == null) {
fragment = ReceiptDetailsPage.newInstance();
}else{
Bundle newBundle = new Bundle();
newBundle.putSerializable("RECEIPT_DATA_TO_HTML", dataToHtml);
// 传递的bundle数据,会调用目标Fragment的onNewBundle(Bundle newBundle)方法
fragment.putNewBundle(newBundle);
}
// homeFragment以SingleTask方式启动
mFragment.start(fragment,SupportFragment.SINGLETASK);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.