基于变量启动一个或另一个活动的最佳方式

时间:2016-05-04 09:35:22

标签: android

我想开发一个应用程序,它在开始时检查变量的值,并根据此值启动活动A或活动B,如下所示:

protectec void onCreate(...){
    boolean b = checkVariable();

    if(b){
        startActivityA();
    } else {
        startActivityb();
    }
}

我在做什么

这是我目前实施的方法:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_limitation);

    varChecker = new VarChecker(this);

    if(varChecker.getRemainingUses() <= 0){
        limitReached();
    } else if(varChecker.isFirstTime()){
        firstTime();
    } else {
        startMainActivity();
    }
}

这是必须在第一次执行应用程序时显示的活动。否则,根据getRemainingUses()结果,它必须自动启动活动A或活动B.

问题

有没有办法做我想要的,而不需要创建新的活动,特别是为了避免super.onCreate(savedInstanceState)setContentView(R.layout.activity_limitation)

1 个答案:

答案 0 :(得分:0)

  

有没有办法做我想要的,而不需要创建新的   Activity,特别是为了避免super.onCreate(savedInstanceState)   和setContentView(R.layout.activity_limitation)?

前段时间我遇到过类似的问题。据我所知,无法避免调用super.onCreate(savedInstance)setContentView(R.layout.activity_limitation)。它是Android活动的设计。

我看到了以下可能的解决方案:

  1. 如果您想通过例如选择适当的活动点击一个 按钮,那么你只需要创建一个基于a的新Intent 变量并没有问题。
  2. 如果你想选择一项活动 不同的流动时刻 - 例如在申请开始期间,您可以:
    • 为两个选项创建单个活动,使用片段并在它们之间切换
    • 使用空布局创建“虚拟”活动,创建意图并根据变量切换到适当的活动并完成“虚拟”活动。请注意,此解决方案是一种解决方法,值得花一些时间来找出更好的方法,但我不确定是否有针对此类用例的推荐解决方案。