欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android Java.lang.IllegalStateException: No activity 把自己坑了

程序员文章站 2022-05-14 08:31:02
android java.lang.illegalstateexception: no activity 我出现这个异常的原因比较坑,viewpager持有的firstfragment内部需要维护三...

android java.lang.illegalstateexception: no activity

我出现这个异常的原因比较坑,viewpager持有的firstfragment内部需要维护三个fragment,所以内部也需要用到fragmentmanager,用于在setuservisiblehint方法里获取了fragmentmanager的实例,导致上级fragment的mchildfragmentmanager 这个实例被赋值,进入了不改进入的分发逻辑。

fragment.java

@callsuper
 public void oncreate(@nullable bundle savedinstancestate) {
  mcalled = true;
  restorechildfragmentstate(savedinstancestate);
  if (mchildfragmentmanager != null
 && !mchildfragmentmanager.isstateatleast(fragment.created)) {
mchildfragmentmanager.dispatchcreate();
  }
 }

而这个mchildfragmentmanager没有绑定对应的宿主host所以报了crash

fragmentmanager.java

void movetostate(int newstate, boolean always) {
  if (mhost == null && newstate != fragment.initializing) {
throw new illegalstateexception("no activity");
  }

  if (!always && newstate == mcurstate) {
return;
  }

  mcurstate = newstate;

遇到同样问题的同学可以看看自己获取fragmentmanager的地方是否合理。