如何实施以下内容?

时间:2013-11-22 11:11:17

标签: android android-intent android-activity

假设:

  • 6项活动。 (A,B,C,D,E,F)
  • 每个活动包含多个edittexts或相机实现以及下一个按钮以转到下一个活动(将要打开的活动取决于用户输入的值)。
  • 如果可以显示或不显示edittexts,则
  • 如果布局上没有edittexts,则只显示下一个按钮。

应用程序的流程: A->B->C(->D)->E->F

只有在活动C中遇到某个条件时,活动D才会打开。

TODO:

  • Incase,活动不包含edittext,只有下一个按钮我才能跳过此活动。
  • 如果我的申请流程如下:A->B->C->E->F那么当我向后按压时,流程应为F->E->C->B->A
  • 如果我的申请流程如下:A->B->C->D->E->F那么当我向后按压时,流程应为F->E->C->B->A
  • 如果我的应用程序流程如下:A->C->D->E->F这里我们跳过B,因为活动B中没有视图,当我向后按压时,流程应为F-> E-> C-> ; A

我做了什么:

  • 要在onCreate()中没有可用字段时跳过活动,我正在检查是否有任何字段是否可显示如果没有,那么我在堆栈中添加活动名称(如果它不存在)然后打开下一个活动。

    // Block for skipping this screen
    if (skipScreen) {
        Intent i = new Intent(B.this, C.class);
        startActivity(i);
        finish();
    } else {
        if (!Constants.st.contains(B.class)) {
            Constants.st.push(B.class);
        }
    }
    
  • 当我从一个活动中按回来时,我会从堆栈中弹出()该活动的名称,并在堆栈顶部查看peek()并跳转到该活动。

    public void onBackPressed() {
        super.onBackPressed();
    
        Constants.st.pop();
        Intent i = null;
        if (Constants.st.isEmpty()) {
               i = new Intent(B.this, A.class);
        } else {
                Class<Activity> jumpTo = Constants.st.peek();
                i = new Intent(B.this, jumpTo);
        }
        startActivity(i);
        finish();
    }
    

1 个答案:

答案 0 :(得分:1)

我认为statePattern会非常有用。 Here是一个简短的教程。