将MainActivity组织到班级中

时间:2016-10-25 09:37:15

标签: java android

我对Android比较陌生,特别是在创建大型项目方面。我倾向于只是添加到MainActivity,但它很快变得笨拙,我想更好地重构/组织我的代码。

假设我有一个MainActivity执行一个动作someAction()由用户输入通过手势和按钮点击启动:

public class MainActivity extends AppCompatActivity implements
    GestureDetector.OnGestureListener,
    GestureDetector.OnDoubleTapListener {

    public void someAction() {
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mDetector = new GestureDetectorCompat(this, this);
        mDetector.setOnDoubleTapListener(this);
    }

    ...

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        someAction();
    }

    ...

    public void buttonClick(View view) {
        // called from res/layout: <Button android:onClick="buttonClick" ... />
        someAction();
    }

}

如何将其拆分为不同的类/文件,以保持文件更小?我想最终得到这样的东西:

MainActivity.java:

public class MainActivity extends AppCompatActivity {
    public void someAction() {
    }
}

MyGestureDetection.java:

public class MyGestureDetection extends MainActivity implements
    GestureDetector.OnGestureListener,
    GestureDetector.OnDoubleTapListener {

    private GestureDetectorCompat mDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mDetector = new GestureDetectorCompat(this, this);
        mDetector.setOnDoubleTapListener(this);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        someAction();
    }

MyButtonHandler.java:

public class MyButtonHandler extends MainActivity {
    public void buttonClick(View view) {
        // called from res/layout: <Button android:onClick="buttonClick" ... />
        someAction();
    }
}

问题1(一般):使用正确的方法是什么?

问题2(具体):我已经能够像上面那样拆分我的代码,例如MyGestureDetection类可以看到someAction()方法,所以没关系。但是,似乎MyGestureDetection没有实例化。在MainActivity中我需要做什么才能使其工作?

1 个答案:

答案 0 :(得分:1)

要不像上帝对象那样对待活动,应该使用其中一个干净的架构(MVP,VIPER,MVVM等......)......

例如,在MVP(代表模型 - 视图 - 演示者)中,您的View层将是一个活动(或片段,因此您将Activity用作生命周期容器),它将呈现屏幕并将所有用户交互传播到Presenter然后,Presenter将执行您的业务逻辑并联系Model层以检索信息和数据......

您可以找到更多有用的信息和教程,以帮助您开始使用干净的体系结构。例如here