如何使用可重复使用的活动在我的应用中定义不同的活动流程?

时间:2016-04-22 14:51:52

标签: android android-intent android-activity android-actionbar

所以,希望这个问题没有模糊描述,我的方案如下:

在我的应用程序中,我有三个流程(显然可能会在将来更多,但我必须尽快提供此应用程序以满足要求,并像往常一样尽我所能为我旁边的人提供坚实的基础)因此,在这三个流程中,每个流程分为四个步骤,每个步骤都相当简单,只需取一个数据并传递给流程结束。

所以,我的问题是:就易于实现和可扩展而言,哪种方法是“最佳”方法,以便能够定义那些重用某些活动的流程。换句话说,我有类似的东西:

流量1:

A到B到C到D显示所有收集的数据

流程2:

A到E到C到D显示所有收集的数据

流程3:

A到F到G到D显示所有收集的数据

应该如何处理数据以及我如何对每个活动说出自己的下一个活动,除了我正在使用一个带有后退箭头的操作栏,所以无论如何你都可以去返回上一步并编辑您之前选择或创建的数据。

也许“最好”这个词不合适,因为我不是要求简单的意见而是我要求建议的方法在Android应用程序中执行此操作,因为这种情况我会说很多应用程序必须处理。

更新我:

第一轮实现这个流程我得到了以下方法,(一种破解的伪java代码简短)

// ActionBarActivity suppose to offer me the change to deal with actionBar and fragment otherwise just Fragment
Flow1Activity extends ActionBarActivity implements AFragmentListener
    onCreate {
        newFragment = new FragmentA();
        generateTransactionTo(newFragment);
    }
    generateTransactionTo(android.app.Fragment newFragment) {
        FragmentTransaction transaction = getFragmentManager().beginTransaction();

        transaction.replace(R.id.container, newFragment);
        transaction.addToBackStack(null);

        transaction.commit();
    }
    onAfragmentConfirmed() {
        // do whatever...
    }

之后,每个片段都有自己的内部接口,活动持有者应该实现(可能在每个下一个片段中,你将调用这个注入的接口),如:

FragmentA extends Fragment
    public interface AFragmentListener {
        void onAFragmentConfirmed();
    }
    onAttach(Context context) {
        super.onAttach(context);
        Activity activity = getActivity();

        try {
            mAFragmentListener = (AFragmentListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement AFragmentListener");
        }
    }
    onClickSomething() {
        mAFragmentListener.onAfragmentConfirmed()
    }

我目前的问题是ActionBar无法正常工作,我正在设置我的操作栏:

ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);
        actionBar.setElevation(0);
    }

但按钮后面显示蚂蚁它没有做任何事情,如果我回到下面的android按钮,它会转到上一个活动:(

有用的链接:

1 个答案:

答案 0 :(得分:2)

一种选择是将屏幕实现为片段。

每个片段都有一个对活动的回调(例如showNext)。 然后,您可以为每个Flow实现一个Activity。

E.G。 活性1显示片段A - > B - > C - > d 活性2显示片段A - > E - > C - > d 活性3显示片段A - > F - > G - > d

这是干净且可扩展的,因为它将顾虑分开。

片段:在屏幕上显示内容 活动:在屏幕之间导航