3

找到一种方法来完成一项活动而不等待它完成,这让我有点痛苦。我知道一个简单的“回报”;声明会解决问题,但在我的架构中我做不到。

我目前有:

public abstract class BaseFragmentActivity extends FragmentActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          if (savedInstanceState != null) {
               finish();
               return;
          }
     }
}

public class MainActivity extends BaseFragmentActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          /* code still executed here even when parent finish(); is called */
     }
}

调用抽象类中的 finish() 后,如何防止 MainActivity 中的代码执行?

更新代码:

public abstract class BaseFragmentActivity extends FragmentActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          if (savedInstanceState != null) {
               finish();
               return;
          }
     }
}

public class MainActivity extends BaseFragmentActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          if (isFinishing()) {
              return;
          }
     }
}

奇怪的是,“返回”似乎有效,但我的 FragmentManager 在最后以某种方式启动了片段。

4

2 回答 2

1

为什么不创建一个布尔值并将其设置为 true 并触发完成?

boolean end = false;

在这里你让它成为现实

public abstract class BaseFragmentActivity extends FragmentActivity {
     protected void onCreate(Bundle savedInstanceState) {
end = true;
     }
}

然后使用 if 语句

public class MainActivity extends BaseFragmentActivity {
     protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
if(end = false){
//stuff here}
else {
finish();
}
     }
}
于 2013-09-04T12:11:21.053 回答
1

试着把它包起来

if(isFinishing()){

    //code you don't want to execute if finish() is called

}
于 2013-09-04T12:13:47.200 回答