定义BaseActivity的正确方法是什么

时间:2018-01-02 07:33:10

标签: android android-activity abstract base

此问题我特定于Android以及可以由所有其他活动扩展的基础Activity的使用。通常w.r.t Java我理解abstract classes的用法和功能。我的情况我有一个基本活动与一些常见的常量,函数和实现一些Interfaces。我的问题应该是abstract,还是可以将其保留为正常Activity。它是否有特定原因abstract

//Standard BaseActivity 
public abstract class BaseActivity extends Activity {
   //common code
}

//Usage 
public class MyActivity extends BaseActivity {
}

如果我将BaseActivity定义如下

,这似乎也有效
//Non Abstract Class
public class BaseActivity extends Activity {
}

因此,问题是使用抽象的具体原因。 在这两种情况下,我都没有在Manifest中定义BaseActivity。

1 个答案:

答案 0 :(得分:3)

您可以参考以下方式来定义BaseActivity。

  

在android中创建baseActivity总是一个好主意   项目

我建议的是从android.app.Activity创建一个名为baseActivity的活动,并使3自定义活动从baseActivity扩展。

例如,

public abstract class MyAppBaseActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

以及您的自定义活动

public class MyCustomActivity extends MyAppBaseActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

请注意,MyAppBaseActivity是一个抽象类。原因是,我们不打算实例化它。这就是您不需要在AndroidManifest.xml文件中添加MyAppBaseActivity类的原因。

  

现在的问题是,你为什么要这样做?意思,为什么你需要   创建一个baseActivity类,然后将您的其他活动作为一个   它的子类?

嗯,这里有一些非常普遍的原因

1。您可以避免应用程序明智的常见ui任务的代码重复。假设您要在不同的活动中显示progressDialog。只需编写代码以在baseActivity中显示progressDialog并从其他活动中调用该方法。

2。您的应用程序菜单应该在不同的应用程序中保持一致。例如,您有一个设置屏幕。选项菜单包含导航到设置屏幕。您应该在整个应用程序中显示设置,这意味着无论活动如何。用户希望从应用程序的任何位置访问设置屏幕。此功能很容易实现,但您必须在每个活动中覆盖onCreateOptionsMenu,或者您可以在baseActivity中覆盖一次。